1

指定されたホワイトリストに含まれていないすべての文字 (文字、数字、空白、括弧、疑問符、説明記号) を置き換える正規表現を作成しようとしています
。これはコードです:

var regEx = /^[^(\s|\w|\d|()|?|!|<br>)]*?$/;
    qstr += tempStr.replace(regEx, '');

何が問題なのですか?

ありがとうございました

4

2 に答える 2

7
  • アンカーが間違っています- 正規表現が文字列全体に一致することしか許可しません
  • 怠惰な量指定子が間違っています - 正規表現が 0 文字に一致することは望ましくありません (アンカーを削除した場合)
  • 括弧とパイプ文字が間違っています。文字クラスには必要ありません。
  • これ<br>は間違っています。文字クラス内の特定の部分文字列を照合することはできません。
  • には\dすでに含まれているので不要\wです (thanks Alex K.!)
  • 複数の置換を実行できるようにするためのグローバル修飾子がありません。
  • 多くの空の文字列をそれ自体で置き換えないようにするために、+代わりに使用する必要があります。*

試す

var regEx = /[^\s\w()?!]+/g;

s を個別に処理します<br>(その正規表現が適用される前、またはブラケットが削除されます)。

于 2013-07-31T14:37:43.683 に答える
0

g(グローバル) 修飾子を使用する必要があります。

var regEx = /^[^(\s|\w|\d|()|?|!|<br>)]*?$/g; // <-- `g` goes there
qstr += tempStr.replace(regEx, '');

これにより、式を複数回一致させることができます。

于 2013-07-31T14:36:54.807 に答える