0

我有以下正则表达式用于匹配 PHP 类、方法和函数名称来验证它们,它最初取自 PHP 的站点(链接如下)

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

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

正则表达式是:

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

现在我在正则表达式方面不是超级棒,因为如果我能提供帮助,我会选择不使用它们,但这次我选择使用它们。

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

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

有没有正则表达式大师可以帮助我。

问候

4

1 回答 1

2

这是可能的答案:

单字符类:

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
于 2011-07-04T05:25:09.860 回答