【问题标题】:JavaScript regex literal vs RegExp objectJavaScript 正则表达式文字与 RegExp 对象
【发布时间】:2012-09-13 06:47:57
【问题描述】:

我很喜欢这个SO 并想设置字符数。因此,我必须将表达式创建为字符串并使用new RegExp()。所以我稍微改变一下 sn-p 并使用一个新的RegExp 对象

原始

var t = "this is a longish string of text";
t.replace(/^(.{11}[^\s]*).*/, "$1");

//result:
"this is a longish"

使用正则表达式

var t = "this is a longish string of text";
var count = 11;
t.replace(new RegExp('^(.{' + count + '}[^\s]*).*'), "$1");

//result:
"this is a longi"

如您所见,第二个结果不是预期的。任何提示在这里使用文字和使用 RegExp 对象有什么不同。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    在字符串中,需要对反斜杠进行转义:

    new RegExp('^(.{' + count + '}[^\\s]*).*')
    

    (您可以使用\S 代替[^\s]):

    new RegExp('^(.{' + count + '}\\S*).*')
    

    【讨论】:

      猜你喜欢
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多