Javascript RegExp和边界

Rus*_*rke 2 javascript regex word-boundary

一位同事问我关于正则表达式的问题,我似乎无法找到并回答他.

我们使用边界来突出显示文本编辑器中的某些文本长度,但是这里有一些示例代码可以显示问题:

<script type="text/javascript">
var str = "Alpha , Beta, Gamma Delta Epsilon, AAlphaa, Beta Alpha<br/>";
var rx = new RegExp('\bAlpha\b','gim');

document.write(str.replace(/\b(Alpha)\b/gim, '-- $1 --'));
document.write(str.replace(rx, '== $1 =='));
</script>
Run Code Online (Sandbox Code Playgroud)

问题是,第一个文字str.replace工作,但RegExp选项不起作用.

我在IE和FF中有相同的行为,有谁知道为什么?

A. *_*evy 10

我猜它不起作用,因为你需要转义传递给RegExp的字符串中的反斜杠.你有这个:

var rx = new RegExp('\bAlpha\b','gim');
Run Code Online (Sandbox Code Playgroud)

你需要这个:

var rx = new RegExp('\\bAlpha\\b','gim');
Run Code Online (Sandbox Code Playgroud)

传递给RegExp的字符串中有2个退格符,因为\b是将退格插入字符串的转义序列.你需要用另一个反斜杠来逃避每个反斜杠.