/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/mu
这是cakePHP用于验证字母数字字符串的正则表达式验证。我无法理解Ll,Lm,Lt等是什么?这是为了验证字母数字字符串,因此他们应该测试数字和字符。有人可以解释一下这个表达。
谢谢。
答案 0 :(得分:9)
Ll,Lm,Lo,Lt,Lu,Nd是unicode字符类。
请参阅此处约1/3的页面:
http://www.regular-expressions.info/unicode.html
- \ p {Ll}或\ p {Lowercase_Letter}:a 具有大写的小写字母 变种。
- \ p {Lu}或\ p {Uppercase_Letter}:大写 具有小写变体的字母。
- \ p {Lt}或\ p {Titlecase_Letter}:a 出现在一个开头的字母 当只有第一个字母的时候 单词是大写的。
- \ p {L&}或\ p {Letter&}:存在的字母 小写和大写变体 (Ll,Lu和Lt的组合)。
- \ p {Lm}或\ p {Modifier_Letter}:特别的 像字母一样使用的字符。
- \ p {Lo}或\ p {Other_Letter}:一封信 或没有的表意文字 小写和大写变体。
答案 1 :(得分:1)
答案 2 :(得分:1)
大括号(Li,Lm,Lt等)之间的代码是Unicode字符的类。快速谷歌Unicode字符类产生例如以下列表:http://www.siao2.com/2005/04/23/411106.aspx
答案 3 :(得分:0)
如果你经常偶然发现奇怪的正则表达式,请尝试以下方法之一:https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world - 虽然我不确定他们是否解释了那些(主要是Unicode?)占位符。否则,请查看http://regular-expressions.info/
上的列表