2014-02-11 218 views
0

我有一個問題,即提交必要接受所有的字符和數字(英語,阿拉伯語等)以外的特殊字符,例如如何檢查是否輸入包含任何特殊字符

〜!@#$ %& *()[] {} <>^+ =:?,;/\」

更具體地說僅特殊字符將被視爲故障。

我wirite下面的代碼,

var textToMatch='$a$'; 
var pattern = /[^[email protected]#$%&*\[\]\{\}\<\>\^+=:,;?/\\]+$/ 
var validationResult = pattern.test(textToMatch); 

在此代碼它工作得很好,當我把 「$$ @」 或 「$」,在textToMatch變量(結果:(假)無效如預期)。 注:(真)有效:當最後一個字符是任何特殊字符

但是當我把所有的字符(不是特殊的一個)作爲最後一個字符在textToMatch變量失敗(結果它只能這不是預期的)例如說:「$ a」。

我真的很困惑。任何幫助將不勝感激。

+0

從模式中的末尾去掉'$'。 – devnull

+0

@devnull不起作用。輸入我已檢查:$ a。如果在整個輸入中存在任何特殊字符,則應該失敗。這就是我需要的。順便說一句,它現在也失敗了$ a $ – Rezoan

+0

你還需要刪除角色類中的否定。 '/ [〜!@#$%&* \ [\] \ {\} \ <\> \^+ =:,;?/ \\] + /'應該適合您。 – devnull

回答

3

問題是你只檢查這個字符串的結尾。你只需要在你的模式開頭添加^,所以整個字符串需要由非特殊字符組成

^[^[email protected]#$%&*\[\]\{\}\<\>\^+=:,;?/\\]+$ 
+0

你是拯救生命的人謝謝:) @Nyx – Rezoan

+0

謝謝@Nyx我學到了一些東西這裏! –

+0

@Rezoan不客氣,我總是樂於幫助:) – Nyx

相關問題