我正在验证地址字段,我需要一些验证正则表达式来拒绝超过3个特殊字符(逗号)
有效格式
New York Marriott Marquis, New York, NY, USA
格式无效
New York,# Marriott, Marquis,& New York, NY, USA,
$$$^^^&&&&&&,&&&&&########New York, NY, USA
preg_match('/^[^*|\":<>[\]{}`\\()';@&$]+$/');
preg_match('/[*|\":<>[\]{}`\\()';@&$]/');
preg_match('/^[a-z0-9- ]+$/i');
但所有这些都没有按照我的需要运作。
我试过了 任何帮助将不胜感激。 在此先感谢:)
答案 0 :(得分:2)
尝试使用否定前瞻(?!
断言下面的内容与character class中的任何字符都不匹配4次:
^(?!(?:.*[*|\":[\]{}`\()';@&$,]){4}).+$
$str = 'New York Marriott Marquis, New York, NY, USA';
preg_match('/^(?!(?:.*[*|\":<>[\]{}`\()\';@&$,]){4}).+$/', $str, $matches);
var_dump($matches);