私は変数として正規表現を作成しましたが、正規表現をテストするためにその変数を呼び出すと失敗します。以下は regex - 条件文(JavaScript)でregex変数を使用できません
が私のコードです:「!」var str = "SERR PBQR PNZC!";
var newStr = [];
var pattern = new RegExp('^[[email protected]#$%^&*)(+=._-]+$', 'i'); // corrected
/*
Matches first 13 and then last 13 charcters of alphabet and adds 13 to
Unicode character and remove 13 respectively. Final Unicode values get added
to array. If the character is not part of alphabet, character remains as is
and is also pushed to array.
*/
for (var i = 0; i < str.length; i++) {
if (str[i].match(/^[A-M]*$/)) {
newStr.push(str.charCodeAt(i) + 13);
} else if (str[i].match(/^[N-Z]*$/)) {
newStr.push(str.charCodeAt(i) - 13);
} else {
newStr.push(str[i]);
}
/*
If statement used for special character validation as defined by regex
pattern variable. Special characters are ignored and pushed to newWord
array, Unicode characters mapped back to alphabet and pushed to newWord
array.
*/
var newWord = newStr.map(function (val) {
if (val == pattern) {
return val;
} else {
return String.fromCharCode(val);
}
});
}
console.log(newWord);
//["F", "R", "E", "E", " ", "C", "O", "D", "E", " ", "C", "A", "M", "P", " "]
上記出力アレイ内のすべての単語や空白を占め、それはしかし、また私の変更します(これが私の配列の中で検証を試みている理由です。map)。
私は手作業で "!"を入力するとチェックが行われるので、検証作業が分かります。誰も私がここで正規表現を使用して間違っていると説明することができますか?私がオンラインで見つけたものは、私のために働いたとは思われません。
PS「/^[a-zA-Z0-9!@#\ $%\^\ & *(+ = ._-] + $/g」と「/! /」動作しませんでした。
あなたは 'RegExp'コンストラクタの代わりに、正規表現リテラル構文を使用していますが、' RegExp'のコンストラクタに渡す文字列内のバックスラッシュをエスケープしていません。 – 4castle
'pattern'は正規表現オブジェクトですが、それを配列と比較できますか? – sln
特に 'RegExp'コンストラクタについて、ドキュメントをもっと詳しく読んでください。 –