现在,我正在尝试使用以下条件创建PHP正则表达式:
这是我到目前为止制定的正则表达式:
/^(?=.{2,16}$)[^@\s]+(?:\h[^@\s]+)*$/um
到目前为止,除了它不符合最后一个必须包含至少2个字母的条件外,它会执行以下所有操作。例如:
"..He" //should be true
"He$*" //should be true
".." //should be false
"*%" //should be false
"!#$%^&*()" //should be false since there is no letters
"$$tonyMoney™" //should be true
"أنا أحب جا™" //should be true
"To" //should be true
任何帮助表示赞赏!谢谢!
答案 0 :(得分:3)
您实际上可以使用
/^(?![^@]*@)(?!.*\s\s)(?=(?:\P{L}*\p{L}){2})\S.{0,14}\S$/us
这是一个regex demo(对于带有多行文字的演示进行了修改)。
要使用正则表达式使用Unicode字符串,您需要指定/u
修饰符。要使.
匹配任何字符,您需要使用/s
修饰符。
正则表达式分解:
^
- 字符串开头(?![^@]*@)
- 确保字符串@
(?!.*\s\s)
- 确保没有2个连续的空格(?=(?:\P{L}*\p{L}){2})
- 确保至少有2个Unicode字母 \S.{0,14}\S
- 2个符号是强制性的,必须以非空格开头和结尾,长度为2到16个字符$
- 字符串结尾