有人能解释这个正则表达式吗?

时间:2011-01-10 16:34:14

标签: php regex

/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/mu

这是cakePHP用于验证字母数字字符串的正则表达式验证。我无法理解Ll,Lm,Lt等是什么?这是为了验证字母数字字符串,因此他们应该测试数字和字符。有人可以解释一下这个表达。

谢谢。

4 个答案:

答案 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/

上的列表