PHP字符串只能包含英文&;数字和'-';
我正在尝试这样做,我的字符串只能包含英文和数字以及“-” 我试过这个:PHP字符串只能包含英文&;数字和'-';,php,string,preg-match,Php,String,Preg Match,我正在尝试这样做,我的字符串只能包含英文和数字以及“-” 我试过这个: elseif (!preg_match('/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/', $link)){echo 'error';} // Always returning error.. 但它不起作用 示例字符串可以是: jhondo jhon do jhon-do9您可以使用 preg_match('~^[A-Z0-9-]*$~iD', $link) 看 图案细节 ^-字符串的开头 [A
elseif (!preg_match('/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/', $link)){echo 'error';} // Always returning error..
但它不起作用
示例字符串可以是:
jhondo
jhon do
jhon-do9您可以使用
preg_match('~^[A-Z0-9-]*$~iD', $link)
看
图案细节
-字符串的开头^
-0或更多(将[A-Z0-9-]*
替换为*
以匹配1或更多)ASCII字母、数字或+
(注意-
修饰符使模式不区分大小写,字符类末尾的i
不必转义)-
-字符串的最末端,因为$
修饰符使其仅在字符串的最末端匹配D
-
字符只能出现在字母/数字之间,并且不能出现在字符串的开头/结尾,请使用'~^[A-Z0-9]+(?:-[A-Z0-9]+)*$~iD'
(匹配非空字符串)或'~^(?[A-Z0-9]+(?:-[A-Z0-9]+)*)?$~iD'
(也匹配空字符串)
如果您只是想避免将字符串与两个连续的
-
字符进行匹配,请在开头添加一个(?!.*)
负前瞻:'~^(?。*)[a-Z0-9-]*$$iD'
尝试预匹配('~^[a-Z0-9-]*$$iD',$link)
。具体要求是什么?可以有多少个-
?连字符可以出现在字符串的开头/结尾吗?或者([\w\d-]+)
@JustCarty[\w\d-]+
等于[\w-]+
,如果未提供u
修饰符,则等于[a-zA-Z0-9.-]+
,即它也匹配
。如果没有锚,它甚至会匹配那些包含字符而不是英文字母、数字或-
@WiktorStribiżew unlimited-的字符串,这可能是因为每个空格都被替换为-。@JustCarty\w
匹配单词字符,即字母、数字、
(如果您指定u
修饰符,甚至更多)。