[英]Regex match not returning true or false
我试图匹配带有括号的值。
var onsuccess = "aaa;bbb(ccc)";
onsuccess.split(';').forEach(function (success) {
var re = new RegExp("\(.*?\)");
document.write(success + ": " + success.match(re) + "<br>");
});
输出是
aaa: ,
bbb(ccc): ,
预期是
aaa: false
bbb(ccc): true
我要去哪里错了? 我一直以该页面为例: http : //www.regular-expressions.info/javascriptexample.html
这是我的小提琴: http : //jsfiddle.net/valamas/8B5zw/
谢谢
var onsuccess = "aaa;bbb(ccc)";
onsuccess.split(';').forEach(function (success) {
var re = /\(.*?\)/;
document.write(success + ": " + re.test(success) + "<br>");
});
注意:如果使用new RegExp(...)
,则需要转义反斜杠。
您的正则表达式应为var re = new RegExp("\\\\(.*?\\\\)");
,但是由于您的正则表达式中没有变量,因此您应该只使用regex文字。
.match()
返回匹配组的数组。
您正在考虑.test()
,它返回true或false。
另外,您的\\
会被Javascript字符串文字所吞噬。
您应该改用正则表达式文字。
这缺少要匹配的组,并且缺少布尔值:
var onsuccess = "aaa;bbb(ccc)";
onsuccess.split(';').forEach(function (success) {
//var re = new RegExp("(\(.*?\))");
var re = /.*(\(.*?\)).*/;
document.write(success + ": " + !!success.match(re) + "<br>");
});
var onsuccess = "aaa;bbb(ccc)";
var rxParens = /.*(\(.*?\)).*/;
onsuccess.split(";").forEach(function(success) {
document.write(success + ': ' + rxParens.test(success) + '<br>' );
});
aaa: false
bbb(ccc): true
顺便提一句,.test的执行速度比.match http://jsperf.com/exec-vs-match-vs-test/5快许多倍
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.