正则纠结中…该如何处理
程序员文章站
2022-06-17 20:57:53
...
正则纠结中……
[^\f\n\r\t\v] \S ,是否真的等同?
去掉[^\f\n\r\t\v],$s2中的空格去不了,加上以后,什么都不匹配……
还有,将[]改成(),再加个第三参数$res,没有获取到结果集。如:
------解决方案--------------------
[^\f\n\r\t\v] \S ,是否真的等同?
不等同!
\S 表示非空白字符,空格也是空白字符,[^\f\n\r\t\v]众位包括
------解决方案--------------------
什么意思?去除其它只保留英文字符?
------解决方案--------------------
[^\f\n\r\t\v] \S ,是否真的等同?
去掉[^\f\n\r\t\v],$s2中的空格去不了,加上以后,什么都不匹配……
- PHP code
function checkString($str){ //去掉非英文以外的其他语言包括乱码、空格。需要英文加特殊符号的内容 if(preg_match("/^ [ [:alnum:] [:space:] [:punct:] [^\f\n\r\t\v]]+ $/x",$str)){ return $str; }else{ echo "含非匹配项"; } } $s1 = "!!!!!!!"; $s2 = "1 1 1 1 1 1 1"; $s3 = "123asd"; echo checkString($s1)."
"; echo checkString($s2)."
"; echo checkString($s3)."
"; /*输出 含非匹配项 含非匹配项 含非匹配项 */
还有,将[]改成(),再加个第三参数$res,没有获取到结果集。如:
- PHP code
if(preg_match("/^( [ [:alnum:] [:space:] [:punct:]]+ )$/x","11111111",$res)){ print_r($res); }else{ echo "含非匹配项"; //输出在这里 }
------解决方案--------------------
[^\f\n\r\t\v] \S ,是否真的等同?
不等同!
\S 表示非空白字符,空格也是空白字符,[^\f\n\r\t\v]众位包括
------解决方案--------------------
什么意思?去除其它只保留英文字符?
------解决方案--------------------
- PHP code
if(preg_match("/^( [^\s]+ )/x","1 1 1 11111",$res)){ print_r($res); }else{ echo "含非匹配项"; }
------解决方案--------------------
你按space键位的那个空格你都没包含进来,恰巧你的串里的空格是space那个,有点晕了吧,呵呵。
ascii码
--------------
space -> 32
\n -> 10
\t -> 9
\f -> 12
\r -> 13
\v -> 11
------解决方案--------------------
你加x修正符然后正则里还有空格符,这不是白用x了么?
- PHP code
if(preg_match("/([^ \f\n\r\t\v]+)/","1 2 3 4444",$res)) { print_r($res) }
------解决方案--------------------
第一个问题就说你想留下什么吧
第二个:
- PHP code
if(preg_match('/(.)\1\1/',$str,$matches)) echo '不能有连续三位相同';
------解决方案--------------------
------解决方案--------------------
嗯,然后加上判断是否有重复字符的,可能必须得循环了,一句正则就出来你要的结果我暂时没想到有什么方法。
------解决方案--------------------
- PHP code
$s = "1 2 3 4444"; //过滤空格的正则 echo preg_replace('/\s+/', '', $s);//1234444 //过滤重复字符的正则 echo preg_replace('/(.)\\1+/', '$1', $s);//1 2 3 4 //和在一起 echo preg_replace(array('/(\s+)/', '/(.)\\1+/'), array('', '$1'), $s);//1234
------解决方案--------------------
preg_match_all("/([\s*@#_)-])|((.)\\3+)/", $psw, $r);
print_r($r);
Array
(
[0] => Array
(
[0] =>
[1] =>
[2] =>
[3] =>
[4] => 11
[5] =>
[6] => 11
[7] =>
[8] => 11
[9] =>
[10] => *相关文章
相关视频
上一篇: 数据模型之概念模型