[英]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.