我试图匹配一个不是开始和(.)点的字符串,并允许一些特殊字符,比如字符串中的下划线(_),我找到了点匹配正则表达式,但是不能匹配我所做的特殊字符。
preg_match('/^(?![.])(?!.*[.]$).*$/', $str)不允许
.example
example.
example?ghh. (or some more special char not allowed in string)允许的
exam.pl56e
exmple_
_example_
exam_ple所以字符串将是
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(.)它匹配正确的开始和结束点,但我需要改进它,以不允许所有特殊字符,如(!&%)等。只要允许给定的特殊字符。谢谢
发布于 2017-07-12 13:28:30
你可以用
'~^(?!\.)[\w.]*$(?<!\.)~'详细信息
^ -字符串的开始(?!\.) -a .不能成为第一个字符[\w.]* -0或更多字母、数字、_或.字符(用+替换*以匹配字符串中的至少一个字符以不允许空字符串匹配)$ -字符串的结尾(?<!\.) -最后一个字符不能是.发布于 2017-07-12 13:27:56
不如:
^\w[\w.]*\w$这是匹配的字母或下划线,可选点在中间,然后字母数字或下划线。
注:它匹配大于或等于2个字符的字符串。
这一个匹配字符串的长度至少一个字符。
^(?!\.)[\w.]+$(?<!\.)发布于 2017-07-12 13:02:17
preg_match('/^[^.].*[^.]$/', $str)如果需要避免字符串开头和结尾的点,请使用类^。
.*告诉您允许字符串中的所有字符。如果你的目标是限制字符串中的一些字符,你可以使用^.在点之前。
preg_match('/^[^.][^?*].*[^.]$/', $str)https://stackoverflow.com/questions/45058309
复制相似问题