我尝试检测这样的文本:E(id,x,y);
代码是:
var patt1= /\bE\[[\w]+,[\d]+,[\d]+\]\;\b/i;
document.write(patt1.test("E[id,1,2];"));
结果是:false
但是当我改变
/\bE\[[\w]+,[\d]+,[\d]+\]\;\b/i;
到
/\bE\[[\w]+,[\d]+,[\d]+\]\;/i;
结果是:true。但它也允许E[id,1,2];moretext。
我尝试检测这样的文本:E(id,x,y);
代码是:
var patt1= /\bE\[[\w]+,[\d]+,[\d]+\]\;\b/i;
document.write(patt1.test("E[id,1,2];"));
结果是:false
但是当我改变
/\bE\[[\w]+,[\d]+,[\d]+\]\;\b/i;
到
/\bE\[[\w]+,[\d]+,[\d]+\]\;/i;
结果是:true。但它也允许E[id,1,2];moretext。
哦!我创立了。\b不会“检测字符串的开头和结尾” 。它匹配单词边界。^ 是字符串的开头,$ 是字符串的结尾。
所以我改变了“/\bE[[\w]+,[\d]+,[\d]+]\;\b/i;” 到 "/^E[[\w]+,[\d]+,[\d]+]\;$/i;" 对于正确的常规。谢谢
http://www.regexplanet.com/advanced/javascript/index.html是尝试正则表达式的好工具。我不知道你为什么对结果感到惊讶,因为它们是正确的。