如果您使用XRegExp的'x‘标志,则不清楚如何将文字'#’添加到搜索中。
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表达式中?我被难住了。
发布于 2012-11-01 06:00:00
我找到了答案,请注意,我上面的测试不会起作用,因为空格应该被\\s+替换。
答案似乎是用[#]。
> XRegExp("the\\s+[#]\\s+hey",'x').xtest("the # hey")
true发布于 2015-09-26 06:20:55
http://xregexp.com/flags/#extended上提供了flag x的文档。
x的作用之一是忽略正则表达式模式中的空格。我看到您已经发现,您的正则表达式中的文字空格可以替换为\s (由于字符串转义规则,当\\s嵌入到字符串文字中时)。但请注意,这会将您的模式从只匹配一个空格字符更改为匹配任何空格字符。或者,您可以直接转义空格:XRegExp('the\\ \\# \\ hey', 'x')。或者,您可以以与使用[#]相同的方式使用[ ]。或者你可以做一些像XRegExp('the' + XRegExp.escape(' # ') + 'hey', 'x')这样的事情。或者,如果您的模式中包含文字空格和#字符,则不要使用x标志。
https://stackoverflow.com/questions/13168049
复制相似问题