Hullo,全部。我有一个正在使我的眼睛交叉的正则表达式问题。我以为我会用我的“打电话给朋友”选项。
这是我经常用于验证人名的表单输入的php正则表达式:/^\pL[\pL '-&]*\z/
,它成功捕获所有unicode字符,空格,连字符和&符号(联合名称的最后一个)。
在一个简单的验证场景中,它的工作原理如下:
if(preg_match("/^\pL[\pL '-&]*\z/",$name)){
echo 'That doth be a name!';
}
else{
// error procedure
}
举个例子,“Donald&amp; Barack Trump-Obama”的比赛将返回“That doth be a name!”,而“Donald&amp; Barack Trump4444Obama”会因为数字“4”而返回错误。< / p>
现在,我们只是说我有数千这些正则表达式,除了名称验证之外的各种场景,我想将它们用作正则表达式过滤器,而不是上面的假期场景。
如果我只是这样做:
$filteredName = preg_replace("/^\pL[\pL '-&]*\z/","",$name);
然后,如果名称完全匹配,则不返回任何内容(""
)。
我如何告诉preg_replace
输入“Donald&amp; Barack Trump4444Obama”并返回“Donald&amp; Barack TrumpObama”?
请记住,我提出这个问题的动机是我有数百个正则表达式来运行漏斗。