如何匹配U1234,而不是Javascript中的\ U1234?
我无法弄清楚如何不匹配单反斜杠。 我能得到的最接近的是:
\[\\]{0}U[0-9]{4}\b
但这不起作用。 有什么建议吗?
答案 0 :(得分:9)
JavaScript绝对不支持lookbehind断言。在我看来,获得你想要的东西的下一个最好方法是
(?:^|[^\\])(U[0-9]{4})
说明:
(?: # non-capturing group - if it matches, we don't want to keep it
^ # either match the beginning of the string
| # or
[^\\] # match any character except for a backslash
) # end of non-capturing group
(U\d{4}) # capturing group number 1: Match U+4 digits
答案 1 :(得分:1)
[^\\]U[0-9]{4}
或沿着这些方向的东西。它与主题字符串的最开头的序列不匹配...
答案 2 :(得分:0)
不幸的是,JS似乎不支持正确的语法,即后断言/(?<!\\)U[0-9]{4}/
。
所以你需要使用:
/[^\\]U[0-9]{4}/
这是regexp文字的语法。如果将regexp放在字符串中,则必须再次转义反斜杠:
"[^\\\\]U[0-9]{4}"
答案 3 :(得分:0)
我建议使用lookbehind,但是JavaScript doesn't seem to support it。也许你可以在U [0-9] {4}上匹配,找到匹配的位置,然后检查左边的字符,看它是否是\?
答案 4 :(得分:0)
JavaScript的RegExp不支持负面的后置断言。建议你只匹配/ [^ \] U /的想法会匹配像“_U”这样的字符串,所以这不是答案。最好的办法是使用两个正则表达式,第一个用于查找所有出现的表达式,然后是第二个用于过滤后视图的表达式。
"\\U0000 U0000".match(/\\?U[0-9]{4}/g)
.filter(function (match) {
return !/^\\/.test(match)
})
答案 5 :(得分:0)
嗯...是\ ^ U [0-9] {4} \ b适合你吗?