2010-11-28 126 views
3

textarea是我的表单的一部分。用户必须写一点文字,我想验证这些文字。现在我使用正则表达式如下:用于描述表单输入的正则表达式

/^[0-9a-zA-ZäöüÄÖÜ_\-']+$/ 

虽然我在处理所有单词,AOU正则表达式所提到的äöüÄÖÜ..为无效。此外,它不接受空的空间。

任何想法如何提高正则表达式?

回答

5

使用Unicode的正则表达式:

/[\pL\pN_\-]+/ 
+0

您可能希望使用`\ p {Pd}`而不是`-`(可能),并且您可能希望使用`\ p {Pc}`而不是`_`可能,但更不可能)。 – tchrist 2010-11-29 00:33:59

1

首先,您可能遇到了编码问题,这就是为什么äöüÄÖÜ被注册为无效。我不是PHP用户,所以我不能直接回答你的问题,但看看this page可能会帮助你。而且,使用适当的字符类可能比明确写出所有适当的字母更好。唉,这也可能是编码配置依赖。

其次,你需要一个空间,在你的正则表达式,所以

/^[0-9a-z A-ZäöüÄÖÜ_\-']+$/ // note space after a-z 

应该工作。请注意我在上一段中关于使用字符类所写的内容。而不是a-zA-ZäöüÄÖÜ

1

你可能只使用\w表示所有“字”字符(字母,数字等),所以正则表达式将
/^[\w_\-' ]+$/
你考虑到来自用户的内容文本\w可能就足够了是“有效的”?

+0

好,因为它是一个描述文本文本可能包含相当一切,一个单词序列和字符,限制这个序列像“。”,“!”要么 ”?”; \ w不接受öäÖÄüÜ.. – 2010-11-28 14:31:38

2

的PCREü修改允许UTF-8。您还缺少从正则表达式的空间,你可以凝聚了一点:

/^[0-9a-zäöü\- ]+$/ui 

虽然我不知道,如果“我”将与外国字符的首都工作。

您可能还需要包含标点符号。