Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在带有注释的XRegExp中查找哈希(";#";)_Javascript_Regex_Xregexp - Fatal编程技术网

Javascript 在带有注释的XRegExp中查找哈希(";#";)

Javascript 在带有注释的XRegExp中查找哈希(";#";),javascript,regex,xregexp,Javascript,Regex,Xregexp,如果使用XRegExp的“x”标志,则不清楚如何将文字“#”添加到搜索中 似乎不会产生任何照明 例如: > XRegExp("the # hey",'x').toString() '/the(?:)/' 这是意料之中的事,“#”之后的所有内容都是注释,被忽略 显而易见的解决方案,不忽略\和该行的以下内容,通常(根据我有限的经验)使用转义修饰符,例如\: > XRegExp("the \# hey",'x').toString() '/the(?:)/' 或 不幸的是,这两种方法都

如果使用XRegExp的“x”标志,则不清楚如何将文字“#”添加到搜索中

似乎不会产生任何照明

例如:

> 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