如何在PHP中“合并”这两个正则表达式?
发布时间:2020-12-13 17:42:33 所属栏目:PHP教程 来源:网络整理
导读:我正在学习正规表达,所以请跟我一起轻松! 如果不以_(下划线)开头且仅包含单词字符(字母,数字和下划线本身),则用户名被视为有效: namespace GremoExtraValidationBundleValidatorConstraints;use SymfonyComponentValidatorConstraint;use SymfonyCo
我正在学习正规表达,所以请跟我一起轻松!
如果不以_(下划线)开头且仅包含单词字符(字母,数字和下划线本身),则用户名被视为有效: namespace GremoExtraValidationBundleValidatorConstraints; use SymfonyComponentValidatorConstraint; use SymfonyComponentValidatorConstraintValidator; class UsernameValidator extends ConstraintValidator { public function validate($value,Constraint $constraint) { // Violation if username starts with underscore if (preg_match('/^_',$value,$matches)) { $this->context->addViolation($constraint->message); return; } // Violation if username does not contain all word characters if (!preg_match('/^w+$/',$matches)) { $this->context->addViolation($constraint->message); } } } 为了在一个正则表达式中合并它们,我尝试了以下内容: ^_+[^w]+$ 要读作:如果以下划线(最终多于一个)开头并且如果不允许至少一个字符(不是字母,数字或下划线),则添加违规.例如,不适用于“_test”. 你能帮我理解我错在哪里吗? 解决方法
您可以在第二个正则表达式中添加负前瞻断言:
^(?!_)w+$ 现在意味着,尝试匹配整个字符串而不是它的任何部分.该字符串不能以下划线开头,并且可以包含一个或多个单词字符. See it work (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |