在正则表达式中查找加号

新手上路,请多包涵
var string = 'abcd+1';
var pattern = 'd+1'
var reg = new RegExp(pattern,'');
alert(string.search(reg));

我昨晚发现,如果您尝试在带有 Javascript 正则表达式的文本字符串中找到加号,它会失败。它不会找到该模式,即使它存在于该字符串中。这必须是因为一个特殊的角色。在一段文本中查找加号的最佳方法是什么?另外,还有哪些角色会失败?

原文由 Justin Helgerson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 856
2 个回答

Plus 是正则表达式中 的特殊字符,因此要将该字符表示为数据,您必须通过在其前面加上 \ 对其进行转义。

 var reg = /d\+1/;

原文由 Quentin 发布,翻译遵循 CC BY-SA 3.0 许可协议

\-\.\/\[\]\\ **always** need escaping
\*\+\?\)\{\}\| need escaping when **not** in a character class- [a-z*+{}()?]

但是,如果您不确定,在您尝试匹配的非单词字符之前包含转义符也没有什么坏处。

数字或字母是单词字符,转义数字是指先前的匹配,转义字母可以匹配不可打印的字符,如换行符 (\n)、制表符 (\t) 或单词边界 (\b) 或 aa字符集,如任何单词字符 (\w)、任何非单词字符 (\W)。

除非你是认真的,否则不要转义字母或数字。

原文由 kennebec 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题