1

これを行うと、アルファ以外の文字をすべて削除しようとすると、

var word = "thi^s";
var word2 = word.replace(/[^a-zA-z]/g, "");
console.log(word2);

キャレットがすり抜けるのはなぜですか?私はそれを逃れることになっていますか?

4

3 に答える 3

2

大文字/小文字の表現が正しくありません。このエラーが正規表現エンジンをスローしていると思います。a-zA-zと置き換えますa-zA-Z

使用する

var word = "thi^s";
var word2 = word.replace(/[^a-zA-Z]/g, "");
console.log(word2);

どちらが生成されますか:this

編集:ガンボが述べたように、A-z実際にはA(U + 0041)からz(U + 007A)を意味し、これには^(U + 005E)が含まれます。

于 2013-08-12T05:08:29.440 に答える
1

中に書かれているもの[]はすべて文字クラスです。[^a-zA-Z]az または Az 以外を意味します。

\^文字通りの意味で使用します。

于 2013-08-12T05:11:21.080 に答える
0

次のようにします。

var word = "thi^s";
var word2 = word.replace(/[\^a-zA-Z]/g, "");

console.log(word2); //=> ""

キャレット^には文字クラス内で特別な意味があるため。

[^a-zA-Z]大文字と小文字の英語のアルファベット以外のすべてに一致することを意味します。

于 2013-08-12T05:07:14.913 に答える