首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有注释的XRegExp中查找散列("#")

在带有注释的XRegExp中查找散列("#")
EN

Stack Overflow用户
提问于 2012-11-01 05:57:54
回答 2查看 83关注 0票数 2

如果您使用XRegExp的'x‘标志,则不清楚如何将文字'#’添加到搜索中。

The documentation似乎不会产生任何照明。

例如:

代码语言:javascript
复制
> XRegExp("the # hey",'x').toString()
'/the(?:)/'

这与预期不谋而合--“#”之后的所有内容都是注释,并被忽略。

显而易见的解决方案,不要忽略#和该行上的以下内容,通常(根据我有限的经验)以转义修饰符开头,例如\\

代码语言:javascript
复制
> XRegExp("the \# hey",'x').toString()
'/the(?:)/'

代码语言:javascript
复制
> XRegExp("the \\# hey",'x').toString()
'/the(?:)\\#(?:)hey/'

不幸的是,两者都没有像预期的那样工作,前者的原因很明显,而后者则产生了影响:

代码语言:javascript
复制
> XRegExp("the \\# hey",'x').xtest("the # hey")
false

甚至在更有害的情况下,我们必须修改输入数据:

代码语言:javascript
复制
> XRegExp("the \\# hey",'x').xtest("the \\# hey")
false

另一种规范转义方法是使用双哈希(##),但这也不起作用:

代码语言:javascript
复制
> XRegExp("the ## hey",'x').toString()
'/the(?:)/'

所以问题变成了,如何将#文字添加到使用'x‘标志的XRegExp表达式中?我被难住了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-01 06:00:00

我找到了答案,请注意,我上面的测试不会起作用,因为空格应该被\\s+替换。

答案似乎是用[#]

代码语言:javascript
复制
> XRegExp("the\\s+[#]\\s+hey",'x').xtest("the # hey")
true
票数 2
EN

Stack Overflow用户

发布于 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标志。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13168049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档