正则纠结中……
[^
] S ,是否真的等同?
去掉[^
],$s2中的空格去不了,加上以后,什么都不匹配……
- PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->function checkString($str){ //去掉非英文以外的其他语言包括乱码、空格。需要英文加特殊符号的内容 if(preg_match("/^ [ [:alnum:] [:space:] [:punct:] [^
]]+ $/x",$str)){ return $str; }else{ echo "含非匹配项"; }}$s1 = "!!!!!!!";$s2 = "1 1 1 1 1 1 1";$s3 = "123asd";echo checkString($s1)."<br>";echo checkString($s2)."<br>";echo checkString($s3)."<br>";/*输出含非匹配项含非匹配项含非匹配项*/还有,将[]改成(),再加个第三参数$res,没有获取到结果集。如:
- PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->if(preg_match("/^( [ [:alnum:] [:space:] [:punct:]]+ )$/x","11111111",$res)){ print_r($res); }else{ echo "含非匹配项"; //输出在这里}------解决方案--------------------
[^
] S ,是否真的等同?
不等同!
S 表示非空白字符,空格也是空白字符,[^
]众位包括
------解决方案--------------------
什么意思?去除其它只保留英文字符?
------解决方案--------------------
- PHP code
if(preg_match("/^( [^s]+ )/x","1 1 1 11111",$res)){ print_r($res); }else{ echo "含非匹配项"; }<br><font color="#e78608">------解决方案--------------------</font><br>你按space键位的那个空格你都没包含进来,恰巧你的串里的空格是space那个,有点晕了吧,呵呵。<br>ascii码<br>--------------<br>space -> 32<br>
-> 10<br> -> 9<br> -> 12<br>
-> 13<br> -> 11<br><br><br><font color="#e78608">------解决方案--------------------</font><br>你加x修正符然后正则里还有空格符,这不是白用x了么?<br>- PHP code
if(preg_match("/([^
]+)/","1 2 3 4444",$res)){ print_r($res)}<br><font color="#e78608">------解决方案--------------------</font><br>第一个问题就说你想留下什么吧<br>第二个:- PHP code
if(preg_match('/(.)/',$str,$matches)) echo '不能有连续三位相同';<br><font color="#e78608">------解决方案--------------------</font><br>
------解决方案--------------------
嗯,然后加上判断是否有重复字符的,可能必须得循环了,一句正则就出来你要的结果我暂时没想到有什么方法。
------解决方案--------------------
- 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<br><font color="#e78608">------解决方案--------------------</font><br>preg_match_all("/([s*@#_)-])|((.)\3+)/", $psw, $r);<br>print_r($r);<br><br><br>Array<br>(<br> [0] => Array<br> (<br> [0] => <br> [1] => <br> [2] => <br> [3] => <br> [4] => 11<br> [5] => <br> [6] => 11<br> [7] => <br> [8] => 11<br> [9] => <br> [10] => *<div class="clear">
</div>










