【发布时间】:2009-12-17 14:19:28
【问题描述】:
我需要一个函数或正则表达式来验证包含字母字符(包括法语字符)、减号 (-)、点 (.) 和空格(不包括其他所有字符)的字符串
谢谢
【问题讨论】:
我需要一个函数或正则表达式来验证包含字母字符(包括法语字符)、减号 (-)、点 (.) 和空格(不包括其他所有字符)的字符串
谢谢
【问题讨论】:
/^[a-zàâçéèêëîïôûùüÿñæœ .-]*$/i
使用/i 不区分大小写以使事情变得更简单。如果您不想允许空字符串,请将@987654323@ 更改为+。
【讨论】:
u 模式修饰符在这里很合适,n'est-ce pas?
简化解决方案:
/^[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
【讨论】:
À-ÿ 是错误的。不应该是À-Ÿ(example)吗?
试试:
/^[\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
【讨论】:
我一直使用的字符类如下:
[\wÀ-Üà-øoù-ÿŒœ]。这涵盖了比仅法语稍大的字符集,但不包括与法语无关的大部分东欧和斯堪的纳维亚变音符号和字母。我发现这是简洁和排他性之间的一个不错的折衷方案。
为了匹配/验证完整的句子,我使用这个表达式:
[\w\s.,!?:;&#%’'"()«»À-Üà-øoù-ÿŒœ],包括标点符号和法式引号。
【讨论】:
这行正则表达式通过所有 cirano de bergerac 法语文本: (您需要删除标记语言字符 http://www.gutenberg.org/files/1256/1256-8.txt
^([0-9A-Za-z\u00C0-\u017F\ ,.\;'\-()\s\:\!\?\"])+
【讨论】:
只需使用以下代码:
/[\u00C0-\u017F]/
【讨论】:
这可能适合:
/^[ a-zA-Z\xBF-\xFF\.-]+$/
它允许输入一些额外的字符,例如 ÷,但它可以处理相当多的重音字符。
【讨论】:
/[A-Za-z-\.\s]/u 应该可以工作.. /u 开关用于 UTF-8 编码
【讨论】: