2

私はこのSOに長い間来て、文字数を設定したいと思います。そのため、式を String として作成し、 を使用する必要がありますnew RegExp()。そのため、スニペットを少し変更して、新しい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"

ご覧のとおり、2 番目の結果は期待どおりではありません。ここでリテラルを使用することと RegExp オブジェクトを使用することの違いについてのヒントがあります。

4

1 に答える 1

6

文字列では、バックスラッシュをエスケープする必要があります:

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

\S(そして、の代わりに使用できます[^\s]):

new RegExp('^(.{' + count + '}\\S*).*')
于 2012-09-13T06:50:04.630 に答える