Javascript 在带有注释的XRegExp中查找哈希(";#";)
如果使用XRegExp的“x”标志,则不清楚如何将文字“#”添加到搜索中 似乎不会产生任何照明 例如:Javascript 在带有注释的XRegExp中查找哈希(";#";),javascript,regex,xregexp,Javascript,Regex,Xregexp,如果使用XRegExp的“x”标志,则不清楚如何将文字“#”添加到搜索中 似乎不会产生任何照明 例如: > XRegExp("the # hey",'x').toString() '/the(?:)/' 这是意料之中的事,“#”之后的所有内容都是注释,被忽略 显而易见的解决方案,不忽略\和该行的以下内容,通常(根据我有限的经验)使用转义修饰符,例如\: > XRegExp("the \# hey",'x').toString() '/the(?:)/' 或 不幸的是,这两种方法都
> XRegExp("the # hey",'x').toString()
'/the(?:)/'
这是意料之中的事,“#”之后的所有内容都是注释,被忽略
显而易见的解决方案,不忽略\
和该行的以下内容,通常(根据我有限的经验)使用转义修饰符,例如\
:
> XRegExp("the \# hey",'x').toString()
'/the(?:)/'
或
不幸的是,这两种方法都没有达到预期效果,前一种方法有明显的原因,后一种方法会产生:
> XRegExp("the \\# hey",'x').xtest("the # hey")
false
甚至在更有害的情况下,我们必须修改输入数据:
> XRegExp("the \\# hey",'x').xtest("the \\# hey")
false
另一种规范转义方法是使用双哈希(##
),但这也不起作用:
> XRegExp("the ## hey",'x').toString()
'/the(?:)/'
因此问题变成了,如何向使用“x”标志的XRegExp表达式添加
#
文本?我被难住了。我找到了答案,请注意,我上面的测试不起作用,因为空格应该被\\s+
替换
答案似乎是使用[#]
例如
> XRegExp("the\\s+[#]\\s+hey",'x').xtest("the # hey")
true
标志
x
的文档位于
x
的一个影响是忽略正则表达式模式中的空白。我看到您已经发现正则表达式中的文本空格可以替换为\s
(\\s
,因为字符串转义规则,当嵌入到字符串文本中时)。但请注意,这将改变您的模式,从只匹配空格字符改为匹配任何空格字符。或者,您可以直接跳出空格:XRegExp(\\\\\\\\\\hey,'x')
。或者您可以使用[]
的方式与使用[#]
的方式相同。或者您可以执行类似于XRegExp(“+XRegExp.escape(“#”)+“嘿”,“x”)
的操作。或者,如果您的模式中有文本空白和#
字符,就不要使用x
标志
> XRegExp("the\\s+[#]\\s+hey",'x').xtest("the # hey")
true