Rak*_*rma 2 php regex preg-match
我正在尝试匹配一个不是开头的字符串,并且带有(.)点,并允许在字符串中使用一些特殊字符,例如下划线(_)我发现点匹配正则表达式,但无法匹配我所做的特殊字符
preg_match('/^(?![.])(?!.*[.]$).*$/', $str)
Run Code Online (Sandbox Code Playgroud)
不允许
.example
example.
example?ghh. (or some more special char not allowed in string)
Run Code Online (Sandbox Code Playgroud)
允许
exam.pl56e
exmple_
_example_
exam_ple
Run Code Online (Sandbox Code Playgroud)
所以字符串将是
1. Not start with dot but in the middle can be a dot(.)
2. String Not allow special char (&%$#@) etc. But allow alpha numeric, underscore
3. Not end with dot(.)
Run Code Online (Sandbox Code Playgroud)
它正确匹配开始和结束点,但我需要改进它以不允许所有特殊字符,例如(!&%)等。只允许给定的特殊字符。谢谢
您可以使用
'~^(?!\.)[\w.]*$(?<!\.)~'
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
细节:
^- 字符串的开头(?!\.)- a.不能是第一个字符[\w.]* - 0 个或多个字母、数字_或.字符(替换*为+以匹配字符串中至少 1 个字符以禁止空字符串匹配)$- 字符串结尾(?<!\.)- 最后一个字符不能是.