2012-09-14 114 views
1

我試圖創建一個正則表達式來檢查6-12個字符,其中一個是數字,其餘是任何字符,沒有空格。 Regex能做到這一點嗎?我正在嘗試在objective-c中完成此操作,而且我完全不熟悉Regex。我一直在閱讀一對夫婦的教程,但大多數是爲了匹配一個數字或一組數字的簡單情況,但不是我正在尋找的。我可以用方法做到這一點,但我想知道這是否會太慢,我想我可以嘗試學習新的東西。正則表達式的字母,數字,沒有空格

asdfg1 == ok 
asdfg 1 != ok 
asdfgh != ok 
123456 != ok 
asdfasgdasgdasdfasdf != ok 
+0

數字是否必須在最後?或者它可以在字符串中的任何位置?當你說「任何字符」時,你的意思是隻有字母或數字/符號? –

+0

@Snowsickle它可以來到任何地方。 – Crystal

+0

爲什麼你的標題說「數字」,你的問題說「一位數」? 「任何人物」究竟意味着什麼?它是否包含數字?標點? –

回答

0

看來,你的意思是「信」,當你說「性格」 , 對?並且(感謝burning_LEGION指出這一點)可能只有一個數字?

在這種情況下,使用

^(?=\D*\d\D*$)[^\W_]{6,12}$ 

說明:

^    # Start of string 
(?=\D*\d\D*$) # Assert that there is exactly one digit in the string 
[^\W_]  # Match a letter or digit (explanation below) 
{6,12}  # 6-12 times 
$    # End of string 

[^\W_]可能看起來有點古怪。它是如何工作的?那麼,\w匹配任何字母,數字或下劃線。 \W\w不匹配的任何內容匹配。因此[^\W](意思是「匹配任何不是字母數字/下劃線的字符」)基本上與\w相同,但是通過將_添加到該字符類,我們可以從允許的字符列表中刪除下劃線。

+0

你的正則表達式錯誤它傳遞123456 –

+0

@burning_LEGION:你是對的,我沒有注意到只有數字是不允許的。那麼我想知道爲什麼我的答案被接受了。好吧,我已經編輯它了。 –

+0

@tim不允許6個數字沒有任何字符? 123456!= ok http://regexpal.com/ – 2012-09-14 18:27:45

1

使用這個表達式^(?=.*\d)(?=.*[a-zA-Z])[^ ]{6,12}$

+0

您的正則表達式允許空格和其他非字母數字字符。 –

0

我沒有嘗試,雖然,但我覺得這裏就是答案

(^[^\d\x20]*\d[^\d\x20]*$){6,12} 
0

這是一個數字:^[^\d\x20]{0,11}\d{1}[^\d\x20]{0,11}$但我不能限制在6-12的長度,你可以使用其他函數先檢查長度,如果從6到12檢查這個正則表達式的女巫我寫。

相關問題