2012-02-09 44 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