2015-07-21 54 views
-2

我有一個正則表達式,用於比較字符串是否具有alpha和數值。但我需要比較,如果該字符串具有字符串中的任何特殊字符和長度應爲6 我目前正則表達式是帶字母數字的正則表達式,需要檢查字符串的長度

$val = 'A457718'; 
preg_match('/^[A-Z]|[0-9A-Z]*([0-9][A-Z]|[A-Z][0-9])[0-9A-Z]*$/i', $val) 

,但我需要比較,如果有任何特殊字符在那裏和字符串長度應該是6.任何幫助將不勝感激。

+0

提供一些樣品valie和無效輸入。 – anubhava

+0

什麼是「特殊字符」?你只想要字符串長度爲6個字符和字母數字?樣本輸入和預期結果將很有用。 – chris85

+0

除字母數字以外的任何字符 – user3408779

回答

1

您不需要一個正則表達式來檢查長度爲6個字符且只有數字的字符串。

$val = 'A457718'; 
if (is_numeric($val) && strlen($val) == 6) { 
    echo 'true'; 
} else { 
    echo 'false'; 
} 

演示:http://sandbox.onlinephpfunctions.com/code/25c426d1bbbfce4a96c8c1ba74cc4a84b66c2435 功能:
http://php.net/manual/en/function.is-numeric.php
http://php.net/manual/en/function.strlen.php

如果由於某種原因,你需要它的正則表達式。

preg_match('~^\d{6}$~', $val); 

演示:https://regex101.com/r/oR9bT4/1

0

的長度,把在結束{0,6} ..這將限制字符串是從0到6個字符

+0

是的,我在end.preg_match('/^[AZ] | [0-9A-Z] *([0-9] [AZ] | [AZ] [0-9])給出了{0,6} [0-9A-Z] {0,6} * $/i',$ val)。但我的錯誤是這樣的:preg_match():編譯失敗:沒有重複的偏移量52 – user3408779

0

這將匹配任何6-長度的字母數字字符串:

\b[a-zA-Z0-9]{6}\b 

或包括強調字符:

\b\w{6}\b 

這應當加以澄清:

但我需要,如果有任何特殊字符

+0

不需要',6','{6}'表示6個字符。 '\ w'也匹配'_',所以它不只是字母數字。 – chris85

+0

感謝您的注意,我已經更新了答案。 –

0

模式/^[a-zA-Z0-9]{6}$/將匹配六個字符是字母數字比較。

if(preg_match('/^[a-zA-Z0-9]{6}$/', 'A45BBB')){ 
    // Is valid 
} 
相關問題