这是我的代码:
var boo = new RegExp("\\Bis\\B","gi");
var result = boo.exec("this AisA stackoverflow");
document.write(result);
结果是:“是”,但我希望函数 exec 使用非单词边界 \B 返回整个匹配项,即 AisA。我知道我可以使用诸如 .+is.+ 之类的模式来返回 AisA,但我想知道如何用非单词边界做同样的事情。
这是我的代码:
var boo = new RegExp("\\Bis\\B","gi");
var result = boo.exec("this AisA stackoverflow");
document.write(result);
结果是:“是”,但我希望函数 exec 使用非单词边界 \B 返回整个匹配项,即 AisA。我知道我可以使用诸如 .+is.+ 之类的模式来返回 AisA,但我想知道如何用非单词边界做同样的事情。
试试这个:
/.\Bis\B./
这将检查非边界,并将该字符与.
.
这可能是你所追求的?
\S*\Bis\B\S*
由于边界不匹配字符,但只检查一个条件,你必须使用其他东西来获取字符。
字边界是所谓的零宽度匹配,这意味着它们匹配一个条件,而不是一个字符。例如,在正则表达式“\bw”中,“\b”测试在表达式中的位置之前或之后是否有一些空格。它不捕获任何东西。
如果要捕获单词字符,请尝试使用 \w。
见:http ://www.regexguru.com/2008/04/watch-out-for-zero-length-matches/
要匹配包含“is”的单词:
/\b\w*is\w*/gi
最后一个 \b 不是必需的,因为它是 LA(\w*) 的一部分。