2017-10-03 20 views
1

私は特殊文字を検索したいハイフン ' - 'とドル '$'を文字列にアンダースコアとして使用すると、私は常に同じ文字列になります。 文字列は大文字でも小文字でもかまいません 「 - 」と次の2語4数字と「$」$ と一致する必要がありますが、特殊文字Hyphen ' - ' Dollar '$'が表示され、警告が表示されます PHP Preg_match 1つの特殊文字を追加

#!/usr/bin/env php 
<?php 

$line = "ESFEDTH-ZD0099$"; 
if(!preg_match("(^[a-zA-Z0-9]*)-([a-zA-Z]{2})([0-9]{4})", $line)) { 
    echo "A match was not found."; 
} else { 
    echo "A match was found."; 
} 
?> 

結果が間違っている: 警告:するpreg_match():未知の修飾子 ' - ' /Users/skull/Desktop/php/test.phpにライン8 に一致するものが見つかりました。

+2

正規表現には区切り文字が必要です。あなたのロジックのように見えます。 "/(^ [a-zA-Z0-9] *) - ([a-zA-Z] {2})([0-9] {4})/" ' – bassxzero

+1

前に戻る。 'preg_match()'は一致するものがあれば1を返しますが、一致するものがあれば「一致しませんでした」と書いています –

答えて

-2

あなたが花茎たい場合_あなたは、\ _

よろしくを書くために必要がありますので、\で特殊文字をエスケープする必要があります。

1

アンダースコアについての質問ですが、例にはアンダースコアが含まれていません。

また、ロジックが先頭に戻るようです。 preg_match()は一致するものがあれば1を返しますが、一致するものがあれば "一致しませんでした"と書いています。

最後に、正規表現を区切る必要があります。

<?php 

$line = "ESFEDTH_ZD0099"; 
if(preg_match("/(^[a-zA-Z0-9]*)_([a-zA-Z]{2})([0-9]{4})/", $line)) { 
    echo "A match was found."; 
} else { 
    echo "A match was not found."; 
} 
?>