我将如何编写一个正则表达式来匹配字符串后面的值(到下一个逗号)
How would I write a regex that matches the values following a string (to the next comma)
我有一个键=值对的 csv。如何编写一个仅匹配值“1234$32@a”(或键 "password" 之后的任何值)的正则表达式而不使用后视?
system=blah, user=stevedave, password=1234@a, mylocation=amsterdam
我试过以下方法:
[\n\r].*password=\s*([^\n\r]*) didn't match anything (from another SO thread)
\bpassword=\s+(.*)$ just plain ol' wrong.
\bpassword=.+\b, matches the whole string password=1234@a,
(?:password=)(.+,) not sure I understand backreference correctly
看来我的系统不支持回顾(而且它们太贵了),所以这不是一个选择。还有别的办法吗?
在 password=
之后匹配除空格或 ,
以外的任何内容:
var kv = 'system=blah, user=stevedave, password=1234@a, mylocation=amsterdam',
re = /password=([^\s,]+)/,
match = re.exec(kv);
alert(match[1]);
演示:https://regex101.com/r/bE4bZ1/1
严格来说,如果您想要下一个逗号之前的任何内容,可以是 [^,]
.
这应该可以解决问题(我不知道您可能允许哪些特殊字符,所以我只指定了您示例中的那些):
(?:password\s*=\s*)([A-Za-z0-9@$]+)
Javascript 中的一个常见模式是
.replace(/.*(stuff you're interested in).*/, "")
例如:
str = "system=blah, user=stevedave, password=1234@a, mylocation=amsterdam"
pwd = str.replace(/.+?password=(.+?),.+/, "")
document.write(pwd)
.exec
或 .match
后跟 [1]
是脆弱的,因为如果没有匹配它们就会失败。 .replace
只是 returns 原始字符串。
我有一个键=值对的 csv。如何编写一个仅匹配值“1234$32@a”(或键 "password" 之后的任何值)的正则表达式而不使用后视?
system=blah, user=stevedave, password=1234@a, mylocation=amsterdam
我试过以下方法:
[\n\r].*password=\s*([^\n\r]*) didn't match anything (from another SO thread)
\bpassword=\s+(.*)$ just plain ol' wrong.
\bpassword=.+\b, matches the whole string password=1234@a,
(?:password=)(.+,) not sure I understand backreference correctly
看来我的系统不支持回顾(而且它们太贵了),所以这不是一个选择。还有别的办法吗?
在 password=
之后匹配除空格或 ,
以外的任何内容:
var kv = 'system=blah, user=stevedave, password=1234@a, mylocation=amsterdam',
re = /password=([^\s,]+)/,
match = re.exec(kv);
alert(match[1]);
演示:https://regex101.com/r/bE4bZ1/1
严格来说,如果您想要下一个逗号之前的任何内容,可以是 [^,]
.
这应该可以解决问题(我不知道您可能允许哪些特殊字符,所以我只指定了您示例中的那些):
(?:password\s*=\s*)([A-Za-z0-9@$]+)
Javascript 中的一个常见模式是
.replace(/.*(stuff you're interested in).*/, "")
例如:
str = "system=blah, user=stevedave, password=1234@a, mylocation=amsterdam"
pwd = str.replace(/.+?password=(.+?),.+/, "")
document.write(pwd)
.exec
或 .match
后跟 [1]
是脆弱的,因为如果没有匹配它们就会失败。 .replace
只是 returns 原始字符串。