Php 用于描述表单输入的正则表达式
文本区域是我表单的一部分。用户必须写一些文本,我想验证这些文本。目前,我正在使用以下正则表达式:Php 用于描述表单输入的正则表达式,php,regex,validation,Php,Regex,Validation,文本区域是我表单的一部分。用户必须写一些文本,我想验证这些文本。目前,我正在使用以下正则表达式: /^[0-9a-zA-ZäöüÄÖÜ_\-']+$/ 虽然我在正则表达式中提到了äöü196ä220;,但它用äöü处理所有单词。。无效。此外,它不接受空白 如何改进正则表达式?首先,您可能有一个编码问题,这就是为什么äöü196ÖÜ被注册为无效的原因。我不是一个PHP用户,所以我不能直接回答你的问题,但是看一看可能会对你有所帮助。此外,使用适当的字符类可能比显式编写所有适当的字母效果更好。唉,这
/^[0-9a-zA-ZäöüÄÖÜ_\-']+$/
虽然我在正则表达式中提到了äöü196ä220;,但它用äöü处理所有单词。。无效。此外,它不接受空白
如何改进正则表达式?首先,您可能有一个编码问题,这就是为什么äöü196ÖÜ被注册为无效的原因。我不是一个PHP用户,所以我不能直接回答你的问题,但是看一看可能会对你有所帮助。此外,使用适当的字符类可能比显式编写所有适当的字母效果更好。唉,这也可能与编码配置有关 第二,你需要在正则表达式中有一个空格,所以
/^[0-9a-z A-ZäöüÄÖÜ_\-']+$/ // note space after a-z
应该有用。请注意我在上一段中写的关于使用字符类的内容
\w
可能足以代替a-zA-Zäääääää您可以使用\w
指示所有“单词”字符(字母、数字等),因此正则表达式将
/^[\w\u \-']+$/
您认为来自用户的哪些文本是“有效的”?使用支持Unicode的正则表达式:
/[\pL\pN_\-]+/
PCRE u修改器允许utf-8。您还缺少正则表达式中的一个空格,可以将其压缩一点:
/^[0-9a-zäöü\- ]+$/ui
虽然我不确定“我”是否会和外国字符的大写字母一起使用
您可能还希望包含标点符号。由于它是一个描述文本,因此文本可能包含所有内容、一系列单词以及限制其顺序的字符,如“.”、“!”或“?”;您可能希望使用\p{Pd}
而不是-
(可能),并且您可能希望使用\p{Pc}
而不是
(可能,但不太可能)。