2012-02-21 152 views
0

需要正則表達式,它可以匹配像這樣的字符串"1B7FL26X3WS731388"。字母數字17個字符長度。正則表達式

我正在使用這個表達式。

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

但它也返回一個像這樣的字符串的一部分"FGD798791B7FL26X3WS731388POPOD";

我需要選擇一個長度恰好爲17個字符的字符串第18個字符不應該是字母數字。

+0

那表情如何正常工作。如果只在第18個字符是非字母數字時才需要匹配,則應在表達式中指定該字符。 – 2012-02-21 11:12:43

+0

謝謝大家的回覆我得到了我需要的 $ rEX ='/([A-Z0-9]){17}([^ A-Za-z0-9]){1} /'; 它現在正在爲我工​​作 – CoreCoder 2012-02-21 11:18:31

回答

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 2012-02-21 11:16:52

1

您應該使用^ $定界符

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

只允許大寫字母數字17長度的字符串

你的正則表達式將允許包含大寫的字母數字17 lenght字符串的子字符串的所有字符串。

-1

試試這個....

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