【问题标题】:Regexp .test always returns false正则表达式 .test 总是返回 false
【发布时间】:2012-05-31 03:48:28
【问题描述】:
var str = "1405199610";
var re = new RegExp("\d{10}");
var myArray = re.test(str);

myArray 给出错误!

这怎么可能?我用在线正则表达式检查器对此进行了测试,结果正常。当我在控制台或 jsfiddler 中尝试时,它不起作用。我错过了什么吗?

【问题讨论】:

  • 如果你在 Chrome 控制台中输入new RegExp("\d{10}"),你会看到你的表达式变成了/d{10}/。为什么?因为\是字符串中的转义字符,\d是无效的转义序列,所以变成d。如果你想创建一个文字 \ 你必须转义它 \\
  • myArray 对于包含布尔值的变量的名称可能有点误导!

标签: javascript regex escaping


【解决方案1】:
var re = new RegExp("\\d{10}");

当 RegExp() 对象创建正则表达式时,您需要转义 \

见MDN reference

...在使用新的 RegExp("pattern") 表示法时不要忘记对 \ 本身进行转义,因为 \ 也是字符串中的转义字符。

【讨论】:

  • 谢谢大家。我真的需要更多关于这些事情的经验。他们往往很混乱!
猜你喜欢
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多