5

これに対する答えが見つからないようです。文字のホワイトリストに存在しない文字列からすべての文字を削除できる汎用関数が必要です。

var validChars = "0123456789%-"
var stringToTest = "The result is -2,003% of the total"

結果を生成する関数が欲しい: -2,003%

助けてくれてありがとう。広告

4

3 に答える 3

5

「ジェネリック関数が欲しい」

OK、次のように:

function removeChars(validChars, inputString) {
    var regex = new RegExp('[^' + validChars + ']', 'g');
    return inputString.replace(regex, '');
}

var newString = removeChars('01234567890%-', "The result is -2,003% of the total");

このnew RegExp()部分は、(特定の入力に対して) 次のような正規表現を作成します。

/[^01234567890%-]/g

これが意図したとおりに機能するには、有効な文字のリストのハイフンがリストの最後にある必要があることに注意してください。これをテストして移動するコードを追加できます。また、正規表現にとって特別な意味を持つ他の文字 (例: ]) がホワイト リストに含まれている場合は、それらをエスケープする必要があります。そのような詳細は、読者の演習として残しておきます...

于 2013-06-11T22:10:09.230 に答える
2

あなたが探しているのは正規表現です:

"The result is -2,003% of the total".match(/[\d,%\-]+/)[0]; //=> -2,003%
于 2013-06-11T22:09:50.123 に答える
2
var regexp = new RegExp("[^" + validChars + "]", "g");
console.log(stringToTest.replace(regexp, ""));

validCharsユーザー入力が含まれないように注意してください。その場合、適切にエスケープする必要があります。

于 2013-06-11T22:10:45.457 に答える