2017-09-25 16 views
-3

私は以下の3つの機能を持っています。 私はあなたが何かを「防ぐ」ために正規表現を書いていない右正規表現 は私にJavascript特殊文字を禁止する正規表現

//Allow Alphanumeric,dot,dash,underscore but prevent special character and space 
    function Usernames(txtName) { 
     if (txtName.value != '' && txtName.value.match(/^[0-9a-zA-Z.-_]+$/) == null) { 
      txtName.value = txtName.value.replace(/[\W- ]/g, ''); 
     } 
    } 
    //Allow Alphanumeric,dot,dash,underscore and space but prevent special characters 
    function Fullnames(txtName) { 
     if (txtName.value != '' && txtName.value.match(/^[a-zA-Z0-9. -_]+$/) == null) { 
      txtName.value = txtName.value.replace(/[\W-]/g, ''); 
     } 
    } 
    //Allow Alphanumeric,dot,dash,underscore the "@" sign but prevent special character and space 
    function Email(txtName) { 
     if (txtName.value != '' && txtName.value.match(/^[[email protected]]+$/) == null) { 
      txtName.value = txtName.value.replace(/[\W-]/g, ''); 
     } 
    } 
+0

問題がありますか?それらのすべてで? – DontVoteMeDown

+0

「特殊文字」は正確には何ですか?例えばなぜ '@'は特殊文字ではなく '&'ですか? – Liam

+0

'[^ a-zA-Z0-9 \ @ \ s \。\ _ \ - ]'は、a-z、A-Z、0-9、@、 (空白) (ドット)、_と - 、これはあなたが望むものですか? –

答えて

0

を支援してください得るように見える傾けます。彼らはブラックリストではなくホワイトリストです。だから、誰かがあなたの正規表現が許可されているので、それが欲しくないという文字を送信している場合。あなたの特定の問題に関する私の推測は.-_の部分と関係がある。正規表現では、X-Yは "XからYまでのすべて"を意味するので、これは "すべてから(ASCII 2E)から_(ASCII 5F)まで"に変換されますが、皮肉なことにすべての大文字と小文字、0〜9の数字、/:;および@を挙げることができる。これを避けるには、スラッシュがダッシュをエスケープするため、おそらくこの部分を.\-_に変更する必要があります。しかし、それはまだユーザーが.Bobまたは-Larryような名前を作成してもらおうと、あなたは、おそらくこのように、あなたの正規表現は、おそらくお読みくださいしたくない:

/^[0-9a-zA-Z][0-9a-zA-Z.\-_]*$/ 

これは英数字で最初の文字を必要とするあらゆるます残りは英数字、.-または_です。

また、値がこのreg-exと一致していないことを確認したい場合もあります。私はJavascriptでそれが何を伴うのか分かりませんが、私の推測ではおそらくそうでないと思われますvalue == null

関連する問題