2012-05-03 105 views
1

我正在研究解析廣告的PHP腳本,並且我想添加一個正則表達式來查找特殊代碼,這些代碼可以是任意長度的單詞,但由兩個字母組成和任何順序或任何長度的數字。我只是不確定適當的語法是什麼。我發現了允許使用字母或數字的模式,或者需要特定的字母和數字模式,但不是幾乎隨機的組合。PHP的正則表達式來找到包含字母和數字的單詞

任何意見將不勝感激。

樣品:安心購買優惠券代碼WID2010小工具20%的折扣,在星期五

理想情況下,我要檢測的詞「WID010」,並用它來標誌該項目用於其他用途。但是,這種格式並不一定一致。所有可以預測的是代碼總是由至少一個字母和一個數字組成,沒有空格或標點符號。

+1

你能張貼一些樣本數據嗎? – Hersha

+0

想必是零長度的主題是不允許的?你說了任何長度,但我懷疑它必須至少有一個字符? – Robbie

+0

添加了一個示例。目標詞至少是兩個字符,一個字母和一個數字。 – Wige

回答

11

這樣的代碼並要麼包括

  • 任意的字母,接着一個數字和一個任意的數量(最低0)的字母和/或數字
  • 或一個任意的數量(最低1)的字母和/或數的數,接着一個字母和一個任意的數量(最低0)的計數(最小1)

這樣的圖案可能看起來像:

((?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z])[a-zA-Z0-9]*) 
5

類似:

(?=\w*[a-z])(?=\w*[0-9])\w+

這確實爲信先行,然後一個數字,匹配與每個至少一個字母和數字(字)。

ideone

+0

不會在捕捉後面追尋搜索嗎?就像捕捉前的後視搜索一樣?環視並不包括捕獲內容本身。我想這不會按預期工作,請測試這個。 – Kaii

+1

我已經測試,它工作正常。這與驗證密碼至少有一個字母/數字/符號/上/下等等的許多常見正則表達式類似。 –

+0

@Kaii lookahead/behind/around並不捕獲內容本身。但最後的'\ w +'確實如此。環視將意味着末尾的'\ w +'必須至少有一個'[a-z]'和'[0-9]' –

相關問題