1

以下の文字列値をテキスト領域に表示し、最初の文字 @@*n|n を文字列から削除したいと考えています。

文字列は次のとおりです。 Symbol-001 @@*n|nClaimant Name @@*n|nTransaction

以下のコードを使用して、特殊文字の削除に対処しました

var paramVal1 = parent.noteText; //paramVal1 will have the string now
var pattern = /[@@*n|n]/g;
var paramVal1 = paramVal1.replace(pattern,'');
document.getElementById("txtNoteArea").value = paramval1;//appending the refined string to text area

上記の使用されたコードの場合、以下のように出力文字列を取得しています

Symbol-001 |Claimat Name //ここで 'n' が欠落しており、余分な '|' があります 文字 |Transactio //'n' がここにも欠落しており、余分な '|' があります キャラクター

他の値に影響を与えずに文字 @@*n|n を削除してください。

4

4 に答える 4

1

あなたの正規表現が言っているのは、「次の文字のいずれかを削除してください: @|*n」です。明らかに、これはあなたが望むものではありません!

代わりにこれを試してください:/@@\*n\|n/g

これは、「リテラル文字列を削除する」と言っています@@*n|n*バックスラッシュは、とから特別な意味を取り除きます|

于 2013-08-15T10:49:40.603 に答える
-1

質問で言うように最初に出現したものを置き換えたい場合は、正規表現を使用する必要はありません。アスタリスクをエスケープする限り、単純な文字列で十分です。

var str = "Symbol-001 @@*n|nClaimant Name @@*n|nTransaction";
var str2 = str.replace("@@\*n|n", ""); //output: "Symbol-001 Claimant Name @@*n|nTransaction"

すべての出現箇所を置き換えたい場合は、正規表現を使用して、特別な意味を持つすべての文字をエスケープできます。

var str3 = str.replace(/\@\@\*n\|n/g, ""); //output: "Symbol-001 Claimant Name Transaction"

この正規表現ビルダーを見て、便利になるかもしれません - http://gskinner.com/RegExr/

于 2013-08-15T11:07:51.957 に答える
-1

パターンで正規表現の予約文字を使用しています。エスケープする必要があります。次の式を使用できます。

var pattern = /[\@\@\*n\|n]/g;
于 2013-08-15T10:47:11.997 に答える