当前位置: 首页 > 面试题库 >

通过新的RegExp(myString)创建的正则表达式不起作用(反斜杠)

陈阳舒
2023-03-14
问题内容

因此,我正在尝试编写一个匹配所有数字的正则表达式。这是正则表达式:

/\b[\d \.]+\b/g

我尝试在字符串上使用它:

100 two 100

而且一切正常。它与两个数字都匹配。

但是我想以以下形式重写正则表达式:

new RegExp(pattern,modifiers)

因为我认为它看起来更清晰。所以我这样写:

new RegExp('\b[\d \.]+\b','g')

但是现在它与以前的测试字符串不匹配。我已经尝试了所有方法,但是无法正常工作。我究竟做错了什么?


问题答案:

请忽略我的近距离投票。您的问题是字符串中的反斜杠具有特殊含义;如果要在正则表达式中使用反斜杠,则首先需要在传递给正则表达式的字符串中获取文字反斜杠:

new RegExp('\\b[\\d \\.]+\\b','g');

请注意,这是一个非常糟糕的(允许)正则表达式,因为它将匹配". . . "为“数字”或"1 1...3 42"。更好的可能是:

/-?\d+(?:\.\d+)?\b/

请注意,这匹配0000.3不匹配的奇怪事物:

  • 领导 +
  • 科学记数法,例如 1.3e7
  • 缺少前导数字,例如 .4

还要注意,使用RegExp构造函数比使用RegExp文字慢(略),并且习惯用法肯定更少。仅当需要根据提供的字符串构造RegExp时,使用它才是一个好主意。大多数不仅仅通过JavaScript的人都会发现该/.../符号完全清楚。



 类似资料:
  • 问题内容: 我想构建一个JS函数,将一个参数列表隐藏到有效路径中(因为我不确定路径的一部分是否带有斜杠) 这是功能: 使用的RegEx匹配了http://regexpal.com上的所有开始和结束斜杠和反斜杠,但是该功能无法正常工作(RegEx不匹配)。此外,Chrome指出 语法错误:无效的正则表达式:/()$ | ^()/:未终止的组 当我只使用RegEx 但是,使用RegEx 提前致谢! 狮

  • 正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。正则表达式为文本处理提供了强大的功能。Go作为一门通用语言,自然提供了对正则表达式的支持。 regexp 包实现了正则表达式搜索。 正则表达式采用RE2语法(除了\c、\C),和Perl、Python等语言的正则基本一致。确切地说是兼容 RE2 语法。相关资料:http://code.google.com/p/re2/wiki/S

  • 原文: http://exploringjs.com/impatient-js/ch_regular-expressions.html 功能的可用性 除非另有说明,否则 ES5 及更高版本支持所有正则表达式功能。 39.1. 创建正则表达式 39.1.1. 字面义式 vs. 构造函数式 创建正则表达式的两种主要方法是: 字面义式:/abc/ui,被静态编译(在加载时)。 构造函数式:new Reg

  • 问题内容: 我想使用Java正则表达式否定一组单词。 再说了,我想否定,,,。我写了一个正则表达式。 有些似乎不起作用。 问题答案: 试试这个: 如果不包含svn,cvs,nvs或mvc之一,则它将与文本匹配。 这是一个类似的问题:C#正则表达式要匹配不包含某个字符串的字符串?

  • 我正在尝试用单个反斜杠替换所有双反斜杠。我想将替换为。我以为python将视为一个反斜杠,将视为带有两个反斜杠的字符串。但是当我尝试时 因此,我尝试用原始字符串切换替换字符串: 这不是我需要的。所以我只尝试了原始字符串中的一个反斜杠:

  • 我在一个多语言网站上工作,并已选择使用每种语言的自定义URL,例如: 两者都指向城市控制员的指数方法。 在每个页面上都有一个切换语言的选项,它会在我的路由中查找以匹配控制器、视图和语言。 因此,如果我在荷兰语页面上,它会找到英文版的正确网址,即“城市”而不是“steden”。 在我开始使用更复杂的正则表达式之前,一切都很好。 我有这些正则表达式,它们将匹配我所需的URL: 在我的代码中,我可以访问