JavaScript正则表达式文字vs RegExp对象

时间:2012-09-13 06:47:58

标签: javascript regex

我对此SO感到很满意,并希望设置字数。因此,我必须将表达式创建为String并使用new RegExp()。所以我稍微更改了代码段并使用了新的RegExp对象

原单

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

//result:
"this is a longish"

使用RegExp

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对象之间有什么不同。

1 个答案:

答案 0 :(得分:6)

在字符串中,您需要转义反斜杠:

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

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

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