我有正则表达式,在regexr.com上运行良好,但不适用于Javascript。
以下是regexr http://regexr.com/3b780
的链接以下是我的Javascript尝试
NSTextField
返回
var expression="--user=foo:This is description"
var regexExp = new RegExp("(?:=)(.[^:]+)|(?::)(.[^=]+)|(.[^=^:]+)","g");
console.log(regexExp.exec(expression))
[ '--user',
undefined,
undefined,
'--user',
index: 0,
input: '--user=foo:This is description'
]
答案 0 :(得分:2)
RegExp#exec
。你可以靠近String#match
(顺便使用正则表达式文字):
var expression = "--user=foo:This is description";
var re = /(?:=)(.[^:]+)|(?::)(.[^=]+)|(.[^=^:]+)/g;
console.log(expression.match(re));
导致:
Array [ "--user", "=foo", ":This is description" ]
然而,这是一个非常不寻常的正则表达式。非捕获组是无用的,捕获组永远不会是同一匹配的一部分,[^=^:]
可能没有预期的效果。也许这样的事情呢?
var re = /(--.+?)=(.+?):(.+)/;
var expression = "--user=foo:This is description";
console.log(re.exec(expression));
导致:
Array [ "--user=foo:This is description", "--user", "foo", "This is description" ]