Joã*_*imo 4 javascript regex escaping node.js
从节点REPL的事情,
> 'function'.search('io\.')
5
Run Code Online (Sandbox Code Playgroud)
我真的需要它只匹配"io".而不是"功能"或中间只有"io"的东西......
更奇怪的事情:
> 'io'.search('io\.')
-1
> 'ion'.search('io\.')
0
Run Code Online (Sandbox Code Playgroud)
所以看来我没有逃脱点角色..?但我和"\"......对吗?我在http://www.regextester.com/和http://regexpal.com/上进行了测试,它的工作方式与我认为应该有效的方式相同.
我究竟做错了什么 ?node.js中的正则表达式与我习惯的有些不同吗?
EDIT1:在Google Chrome的javascript控制台中,我也得到了
'function'.search('io\.')
5
Run Code Online (Sandbox Code Playgroud)
所以这可能是一个v8的事情......对吗?
EDIT2:我从Firefox的javascript控制台得到了相同的结果,所以它不是v8的东西......这里发生了什么?我真的很困惑......
你的正则表达式是对的,但是你必须对它进行编码以便将它放入字符串中.所以,你的(正确的)正则表达式如下所示:
io\.
Run Code Online (Sandbox Code Playgroud)
但是,反斜杠也是字符串转义字符.要创建包含该正则表达式的字符串,您必须转义反斜杠:
'io\\.'
Run Code Online (Sandbox Code Playgroud)
你写它的方式,字符串实际包含io.,正确匹配function.
这里的问题是反斜杠在两个级别用作转义字符:字符串文字和正则表达式.例如'\\',包含单个反斜杠的字符串(如果在REPL中键入,则可以看到).
有两种选择:
转义反斜杠:'\\.'是包含反斜杠和点的字符串,这是一个匹配点的正则表达式.
使用正则表达式文字: /io\./
> 'function'.search(/\./)
-1
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |