2

这是我的代码:

var boo = new RegExp("\\Bis\\B","gi");
var result = boo.exec("this AisA stackoverflow");
document.write(result);​

结果是:“是”,但我希望函数 exec 使用非单词边界 \B 返回整个匹配项,即 AisA。我知道我可以使用诸如 .+is.+ 之类的模式来返回 AisA,但我想知道如何用非单词边界做同样的事情。

4

4 回答 4

3

试试这个:

/.\Bis\B./

这将检查非边界,并将该字符与..

于 2012-06-19T19:06:10.220 回答
0

这可能是你所追求的?

\S*\Bis\B\S*

由于边界不匹配字符,但只检查一个条件,你必须使用其他东西来获取字符。

于 2012-06-19T19:05:39.990 回答
0

字边界是所谓的零宽度匹配,这意味着它们匹配一个条件,而不是一个字符。例如,在正则表达式“\bw”中,“\b”测试在表达式中的位置之前或之后是否有一些空格。它不捕获任何东西。

如果要捕获单词字符,请尝试使用 \w。

见:http ://www.regexguru.com/2008/04/watch-out-for-zero-length-matches/

于 2012-06-19T19:11:52.103 回答
0

要匹配包含“is”的单词:

/\b\w*is\w*/gi

最后一个 \b 不是必需的,因为它是 LA(\w*) 的一部分。

于 2012-06-19T19:22:59.887 回答