Php 正则表达式中的异或匹配
我需要尝试匹配一个静态Php 正则表达式中的异或匹配,php,regex,Php,Regex,我需要尝试匹配一个静态@字符串或匹配模式[^\d][\w\.\-]+ 我知道我可以使用(…|…)进行匹配,但我似乎无法使用@或[^\d][\w\.-]+进行独家匹配 以下是我当前的尝试:(@|[^\d][\w\.\-]+) 因此,这意味着它将以以下方式匹配: '@' MATCH 'www' MATCH '@www' NOT MATCH 'www@' NOT MATCH 'w@w' NOT MATCH 有什么建议吗 作为记录,这是在PHP5.3中进行匹配 您需要强制它将整个字符
@
字符串或匹配模式[^\d][\w\.\-]+
我知道我可以使用(…|…)
进行匹配,但我似乎无法使用@
或[^\d][\w\.-]+
进行独家匹配
以下是我当前的尝试:(@|[^\d][\w\.\-]+)
因此,这意味着它将以以下方式匹配:
'@' MATCH
'www' MATCH
'@www' NOT MATCH
'www@' NOT MATCH
'w@w' NOT MATCH
有什么建议吗
作为记录,这是在PHP5.3中进行匹配
^…$
@www
匹配得很好,因为根据规则它是有效的。您需要使用类似于[\d@]
演示:如果您可以使用整个字符串匹配,则添加
^
和$
锚定
而[^\d]
将匹配任何非数字的项。任何东西都包括@
。因此,添加一个断言:
preg_match('/^(@|(?!@)[^\d][\w\.\-]+)$/', $subject)