2012-02-21 6 views
0

は、"1B7FL26X3WS731388"のような文字列に一致する正規表現が必要です。英数字17文字の長さ正規表現

私はこの表現を使用しています。

$rEX = '/([A-Z0-9]){17}/'; 

でもこのような文字列から一部を返します。"FGD798791B7FL26X3WS731388POPOD";

正確に17文字の長さの文字列を選択する必要があります。18文字目を英数字にすることはできません。

+0

....これを試してみてください。 18番目の文字が英数字でない場合にのみ一致させる必要がある場合は、その式で指定する必要があります。 –

+0

お返事ありがとうございました。私は必要なものを手に入れました。 $ rEX = '/([A-Z0-9]){17}([^ A-Za-z0-9]){1} /'; これは現在私のために働いています – CoreCoder

答えて

0

$rEX = '/[^A-Z0-9]([A-Z0-9]){17}[^A-Z0-9]/';があります。 [^...]は、文字クラスを否定します。

2

を開始し、あなたのパターンに終わる追加:

$rEX = '/^([A-Z0-9]){17}$/D'; 
0
$rEX = '/[^A-Z0-9]+([A-Z0-9]){17}[^A-Z0-9]+/'; 
0

これは、あなたが^ $は[

$レックス=「/ ^を(デリミタ使用する必要があります

^([a-zA-Z0-9]){17}([^a-zA-Z0-9])*$ 
+0

これは "1234567890abcdefghijk ###"と一致し、グループ1に "567890abcdefghijk"を返します – shift66

1

を行いますA-Z0-9]){17} $/';のみを許可大文字の英数字17の長さの文字列に

あなたが正規表現は、大文字英数字17な長さの文字列の部分文字列が含まれているすべての文字列を許可します。

-1

は、正規表現がどのように動作するかだそれ

<?php 
$title='1B7FL26X3WS731388'; 
$result = preg_replace("/[^a-zA-Z0-9]/", "", $title); 
echo strlen($result); 
?>