如果您使用' x' XRegExp的标志,目前还不清楚如何添加文字'#'搜索。
The documentation似乎没有任何照明。
例如:
> XRegExp("the # hey",'x').toString()
'/the(?:)/'
这是预期的 - 在'#'之后的一切是评论并被忽略。
明显的解决方案,而不是忽略该行上的#
及以下内容,通常会(基于我的有限经验)领先于转义修饰符,例如\\
:
> XRegExp("the \# hey",'x').toString()
'/the(?:)/'
或
> XRegExp("the \\# hey",'x').toString()
'/the(?:)\\#(?:)hey/'
不幸的是,没有按预期工作,前面有明显的原因,后者产生:
> XRegExp("the \\# hey",'x').xtest("the # hey")
false
甚至在更有害的情况下我们必须修改输入数据:
> XRegExp("the \\# hey",'x').xtest("the \\# hey")
false
替代规范转义将使用双哈希(##
),但这也不起作用:
> XRegExp("the ## hey",'x').toString()
'/the(?:)/'
所以问题就变成了,如何将#
文字添加到使用' x'的XRegExp表达式中?旗?我很难过。
答案 0 :(得分:2)
我找到了答案,请注意我上面的测试不起作用,因为空格应该由\\s+
替换。
答案似乎是使用[#]
例如
> XRegExp("the\\s+[#]\\s+hey",'x').xtest("the # hey")
true
答案 1 :(得分:0)
标记x
的文档位于http://xregexp.com/flags/#extended。
x
的一个影响是你的正则表达式模式中的空格被忽略。我发现你发现你的正则表达式中的文字空格可以用\s
(\\s
替换,因为字符串转义规则嵌入了字符串文字中。但请注意,这样可以将您的模式从仅匹配空格字符更改为匹配任何空格字符。或者你可以逃避空间:XRegExp('the\\ \\# \\ hey', 'x')
。或者您可以像使用[ ]
一样使用[#]
。或者你可以做XRegExp('the' + XRegExp.escape(' # ') + 'hey', 'x')
之类的事情。或者,如果您的模式中有文字空格和x
字符,则不要使用#
标记。