对 reg-ex 编译的修改

发布于 2024-11-18 13:57:30 字数 413 浏览 1 评论 0原文

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

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

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

正则表达式是:

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

现在我不太擅长正则表达式,因为如果可以的话我选择不使用它们,但这次我选择使用它们。

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

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

有正则表达式大师可以帮助我吗?

问候

I have the following Regex used to match PHP Class, method and Function names to validate them, it was originally taken from PHP's site (Linked Below)

The problem is that it does not match single character classes, for example:

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

The regex is:

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

Now im not super at Regular Expressions as I choose not to use them if I can help it, but on this occasion I chose to use them.

I need to make 2 basic modifications to the regex:

  • Allow single character's
  • Cannot start with __ (But can start with a single underscore followed by a letter)

are there any Regular Expression guru's who can help me.

Regards

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

_畞蕅 2024-11-25 13:57:30

这是可能的答案:

单字符类:

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

This is the possible answer:

Single char class:

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

single underscore class:

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

double underscore class:

var_dump(preg_match('~^(_(?!_)|[a-zA-Z\x7f-\xff])[a-zA-Z0-9_\x7f-\xff]*$~', '__a')); //0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文