2012-02-09 43 views
0

我必須驗證一個輸入,目前我最簡單的方法是通過一個正則表達式。沒有小數字的單詞字符

我想檢查所有可能出現在名字中的字符,因此應該允許像ü這樣的特殊字符,就像Schüssler一樣。但數字不應該被允許,否則我會用\ w。

所以我試圖匹配除數字和_之外的所有單詞字符,但是我無法使其工作。 那麼有人可以告訴我如何做這項工作(如果可能的話),還是給我另一個解決方案,不涉及所有可能允許的特殊字符?

+0

允許哪些特殊字符?你有一個反向範圍(指定不允許的字符),但這大概是一個更難的任務,因爲它會允許所有類型的符號和其他垃圾不能成爲名稱的一部分。 – 2012-02-09 16:47:45

+0

如果您使用的是正則表達式,只需指定有效字符列表可能是最容易的。 – 2012-02-09 16:48:07

+0

http://www.regular-expressions.info/screens/rxbcharclass.png 沒有小數和_的西歐變體基本 – Johan 2012-02-09 16:48:37

回答

0

此正則表達式將匹配/允許的一切,但在[^]之內的東西。

/[^_0-9 ]+/g 
+0

這會起作用,但是之後我不得不包括所有我不想要的東西,這個東西雖然較短,但仍然是一張不錯的清單。 – Johan 2012-02-09 16:46:16

+0

@Johan那麼你不會繞過這個。某處,並且 - 如何你必須指定你想要的和你不需要的,我想。 – poitroae 2012-02-09 16:47:27

1

這將捕捉浪漫語言的大部分口音。如果你需要更多的,將它們添加:

/^[a-záéíóäëiöúàèììù]+$/i 
+0

OP還希望匹配變音符號和重音字符,它們沒有很好的「ä-ÿ」範圍。 – Blender 2012-02-09 16:42:14

-1

爲什麼不能反其道而行之,檢查只的東西,你不想:

if (!name.match(/[0-9_]/g)) { 
    // Name has no underscores or digits. Keep validating 
} else { 
    // Ask the user why they have digits in their name 
} 
+0

Downvoter,展現你自己。解釋爲什麼我的答案無效會很好。 – Blender 2012-02-09 16:57:47