我需要一个函数或正则表达式来验证包含字母字符(包括法语字符),减号( - ),点(。)和空格(不包括其他所有内容)的字符串
谢谢
答案 0 :(得分:17)
/^[a-zàâçéèêëîïôûùüÿñæœ .-]*$/i
使用/i
不区分大小写以简化操作。如果您不想允许空字符串,请将*
更改为+
。
答案 1 :(得分:5)
尝试:
/^[\p{L}-. ]*$/u
这说:
^ Start of the string
[ ... ]* Zero or more of the following:
\p{L} Unicode letter characters
- dashes
. periods
spaces
$ End of the string
/u Enable Unicode mode in PHP
答案 2 :(得分:4)
简化解决方案:
/^[a-zA-ZÀ-ÿ-. ]*$/
说明:
^ Start of the string
[ ... ]* Zero or more of the following:
a-z lowercase alphabets
A-Z Uppercase alphabets
À-ÿ Accepts lowercase and uppercase characters including letters with an umlaut
- dashes
. periods
spaces
$ End of the string
答案 3 :(得分:1)
[\w .-]
应该足够了,但是您需要\w
考虑语言环境和/或将其置于Unicode模式,因此\w
匹配Unicode定义为字母数字字符的内容。如何在PHP中做到这一点可能只是谷歌之外。
答案 4 :(得分:1)
我一直在使用的字符类如下:
[\wÀ-Üà-øoù-ÿŒœ]
。它所覆盖的字符集仅比法语略大,但不包括东欧和斯堪的纳维亚的变音符号和与法语无关的字母。我发现这是简洁与排他性之间的不错折衷。
要匹配/验证完整句子,我使用以下表达式:
[\w\s.,!?:;&#%’'"()«»À-Üà-øoù-ÿŒœ]
,其中包括标点符号和法式引号。
答案 5 :(得分:0)
这行正则表达式通过所有cyrano de bergerac法语文本: (您需要删除标记语言字符 http://www.gutenberg.org/files/1256/1256-8.txt
^([0-9A-Za-z\u00C0-\u017F\ ,.\;'\-()\s\:\!\?\"])+
答案 6 :(得分:0)
只需使用以下代码:
/[\u00C0-\u017F]/
答案 7 :(得分:-1)
这可能适合:
/^[ a-zA-Z\xBF-\xFF\.-]+$/
它允许一些额外的字符,如÷,但它处理相当多的重音字符。
答案 8 :(得分:-1)
/[A-Za-z-\.\s]/u
应该工作.. / u开关用于UTF-8编码