2011-11-24 101 views
1

我想用正則表達式來檢查,如果我的字符串的格式類似如下:字符串格式檢查(有部分隨機字符串)

mc_834faisd88979asdfas8897asff8790ds_oa_ids 
mc_834fappsd58979asdfas8897asdf879ds_oa_ids 
mc_834faispd8fs9asaas4897asdsaf879ds_oa_ids 
mc_834faisd8dfa979asdfaspo97asf879ds_dv_ids 
mc_834faisd111979asdfas88mp7asf879ds_dv_ids 
mc_834fais00979asdfas8897asf87ggg9ds_dv_ids 

的格式是這樣mc_<random string>_oa_idsmc_<random string>_dv_ids。如何檢查我的字符串是否處於這兩種格式之一?請解釋正則表達式。謝謝。

這是一個字符串的開始與mc_,而與_oa_idsdv_ids,並最終在中間有一些隨機字符串

P.S.隨機字符串由alpha-beta字母和數字組成。

我試了一下(我不知道如何檢查隨機字符串):

/^mc_834faisd88979asdfas8897asff8790ds$_os_ids/ 
+2

我不知道如何檢查隨機字符串,我怎麼可以嘗試用不知道???這就是爲什麼我在這裏問...... –

回答

5

試試這個。

^mc_[0-9a-z]+_(dv|oa)_ids$ 

^   matches at the start of the line the regex pattern is applied to. 
[0-9a-z] matces alphabetic and numeric chars. 
+   means that there should be one or more chars in this set 
(dv|oa)  matches dv or oa 
$   matches at the end of the string the regex pattern is applied to. 
    also matches before the very last line break if the string ends with a line break. 
+0

如果需要這種精確度,OP可以放置'{33}'而不是'+'。 – deviousdodo

+0

'^'和'$'不是字符串的開始和結尾,它們是行的開始和結束。 – tbuehlmann

+0

如果我在ruby代碼中檢查字符串格式,我需要添加//像mystr ==/^ mc_ [0-9a-z] + _(dv | oa)_ids $ /? –

0

/\Amc_\w*_(oa|dv)_ids\z/一試。 \A是字符串的開始,\z結束。 \w*是一個或多個字母,數字和下劃線,(oa|dv)oadv

測試Ruby正則表達式的一個很好且簡單的方法是Rubular,可能看看它。