对reg-ex编译的修改

时间:2011-07-04 05:17:04

标签: php regex class names

我有以下用于匹配PHP类,方法和函数名称的Regex来验证它们,它最初取自PHP的网站(Linked Below)

问题是它与单个字符类不匹配,例如:

class a{}
class b{}
class A{}
class B{}

正则表达式是:

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

现在我不是超级正规表达式,因为我选择不使用它们,但是在这种情况下我选择使用它们。

我需要对正则表达式进行2次基本修改:

  • 允许单个字符
  • 不能以__ 开头(但可以从单个下划线后跟一个字母开始)

是否有任何正则表达大师可以帮助我。

此致

1 个答案:

答案 0 :(得分:2)

这是可能的答案:

单一的char类:

var_dump(preg_match('~^(_(?!_)|[a-zA-Z\x7f-\xff])[a-zA-Z0-9_\x7f-\xff]*$~', 'a')); // 1

单下划线课程:

var_dump(preg_match('~^(_(?!_)|[a-zA-Z\x7f-\xff])[a-zA-Z0-9_\x7f-\xff]*$~', '_')); // 1

双下划线类:

var_dump(preg_match('~^(_(?!_)|[a-zA-Z\x7f-\xff])[a-zA-Z0-9_\x7f-\xff]*$~', '__a')); //0