ホームページ  >  記事  >  バックエンド開発  >  規則性のもつれ…どう対処するか

規則性のもつれ…どう対処するか

WBOY
WBOYオリジナル
2016-06-13 13:36:24966ブラウズ

規則性に悩んでいます...
[^fnrtv] <=> S、これらは本当に同等ですか?
[^fnrtv] を削除します。$s2 内のスペースは削除できません。追加すると何も一致しません...

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
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)."<br>";
echo checkString($s2)."<br>";
echo checkString($s3)."<br>";

/*输出
含非匹配项
含非匹配项
含非匹配项
*/


また、[ を置き換えてください] () に変更し、3 番目のパラメータ $res を追加しましたが、結果セットは取得されませんでした。例:
PHP コード
<!--

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 "含非匹配项";  //输出在这里
}



------解決策----------------- ---
[^fnrtv] <=> S 、これらは本当に同等ですか?
は同じではありません!
S は非空白文字を表します。スペースも空白文字です。[^fnrtv] には
が含まれます。
------解決策---------
これはどういう意味ですか?他の文字を削除して英語の文字だけを残しますか?
------解決策---------
PHP コード
if(preg_match("/^( [^s]+ )/x","1 1 1 11111",$res)){
            print_r($res);
        }それ以外{
   echo "一致しない項目が含まれています";
}
<br><font color="#e78608">------解決策----------------------</font><br>スペースキーを押したスペースは、スペースではありませんたまたま文字列内のスペースがスペースになっているのですが、ちょっと混乱しています。 <br>ASCII コード<br>----------<br>スペース -> 32<br>n -> 10<br>t ->f - > 12<br>r -> 13<br>v -> 11<br><br>
<br><br>------解決策------------------<font color="#e78608"></font>x 修飾子を追加すると、スペース文字が追加されます、これは無駄にxを使っていませんか? <br><br>PHP コード
if(preg_match("/([^ fnrtv]+)/","1 2 3 4444",$res)) { print_r($res) }
<br>------解決策---------<font color="#e78608"></font>最初の質問に留まりたいとだけ言ってください?<br>2 番目:<br>PHP コード
if(preg_match('/(.)11/',$str,$matches)) echo '連続する同じ 3 桁は使用できません';
<br>------解決策---------<font color="#e78608"></font><br>
話し合う
PHP コード

if(preg_match("/([^ fnrtv]+)/","1 2 3 4444",$res))
{
print_r( $ res);
}
//Output
Array ( [0] => 1 [1] => 1 ) //2 3 4444 はどうでしょうか?


まだ役に立ちます。回答を手伝ってください:
1. フォーム フィード、ライン フィード、キャリッジ リターン、スペース、タブ、垂直タブ、特殊文字、正規表現をフィルタリングできます。 モード:?
2. 1の場合...


------解決策----------------------それでは、繰り返しの文字があるかどうかを判断するために追加します。はい、ループする必要があるかもしれません。今のところ、正規表現を使用すると、必要な結果が得られます。
<br>------解決策---------<font color="#e78608"></font><br>PHP コード
$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>preg_match_all("/([s*@# _ )-])|((.)\3+)/", $psw, $r);<br>print_r($r);<br><br><br>配列<br>(<br> [ 0] => 配列<br> (<br> [0] => <br> [1] => [4] => 11<br> [5] => <br> [6] = > 11<br> [7] => <br> [10] =>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。