2

したがって、{x} の文字列を検索しています。ここで、x は 1 ~ 9 の数字であり、正規表現は最初の出現を見つけてコールバック関数を実行しますが、これは最初に見つかったインスタンスでのみ呼び出されます。たとえば、{2}Some{3}String は、括弧内の整数に応じて x 回の置換値を返すため、関数は を返し		Some{3}たいときに戻り		Some			Stringます。

正規表現についてはよくわかりませんが、一致したすべてのオカレンスでコールバック関数を実行するために追加する必要があるものはありますか?

これがコードです

var string = "{2}Some{3}String";

function replaceWithTabs(propertyName) {  
  var regExp = new RegExp('\{[1-9]\}');
  function addTabs(match) { 

    var string = '',
        i = 0,
        length = match.substring(1,2);

    for(i; i < length; i++) {
        string += "&#09;";
    }
    return string;  
}  return propertyName.replace(regExp, addTabs);  }
4

1 に答える 1

3

RegExp代わりに次のリテラルを使用してください。

var regExp = /{[1-9]}/g;

{or}は特別な記号ではないRegular Expressionため、スラッシュを避けることができます。gRegExp のフラグはglobal match、すべての一致ではなく、最初の一致のみを置き換えることを意味します。literal高速であるため、代わりに使用RegExp contstructorすることをお勧めします。また、RegExp コンストラクターを使用する場合は\、スラッシュが特殊な記号であるため、さらに記号をエスケープする必要がありますstring literal。このことを考慮:

var regliteral = /\./;
//Similar with constructor
var regconstructor = new RegExp('\\.');  //slash is special symbol in string,so we add extra slash before it
于 2012-07-06T19:16:35.137 に答える