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是将退格插入字符串的转义序列.你需要用另一个反斜杠来逃避每个反斜杠.
| 归档时间: |
|
| 查看次数: |
3774 次 |
| 最近记录: |