2011-07-19 44 views
1

我想這個pattron幫助使用正則表達式

field-122 <--the number could be into 0 to 999 

創建正則表達式我開發這個正則表達式

Regex.Replace(htmlString, "field-*([0-9]|[1-9][0-9]|[1-9][0-9][0-9])", "|", RegexOptions.Singleline); 

但失敗時,它更是2位的數字。表達式中出現了什麼問題

回答

2

試試這個關於大小

/field-[1-9]?[0-9]{1,2}/ 

如果C#正則表達式不支持大括號語法,這也應該起作用。

/field-[1-9]?[0-9]?[0-9]/ 

如果你想任意長的數字,你可以使用

/field-[1-9]?[0-9]+/ 

僅供參考,?意味着零個或一個+意味着一個或多個,並{n,m}意味着至少n並且最多爲m

1

我不確定,但是您不是在搜索單詞測試,而是在搜索0或更多-'s。號碼捕獲部分過於複雜。嘗試:

意見的基礎上貫穿這個線程
"fieldText-(\\d{1,3})" 
+0

如果你想避免fieldText-01,那麼你會想添加一個負面的lookahead。 '「fieldTest - (?!0 \ d)(\\ d {1,3})」' –

+0

只要輸入有效但它允許001和01,這是正確的。基本上從零開始的數字。取決於這是否是一個有效的選擇? – rtpHarry

+0

我懷疑這是一個問題,但你永遠不知道人們在用什麼東西。 – Paulpro

1

最好的版本,我們已經集體想出是:

field-(0|[1-9]\d{0,2}) 

這基本上是@ PaulPRO在通過自己修改的另一個線程評論貢獻,以反映OP更新了需求(字段而不是fieldText)。

這些值:

field-122 
field-1 
field-55 
field-999 
field-0 

但這些值:

field-001 
field-01 
field-0 
field-- 
field--- 
field--anything you want here 

部分匹配:

anything you want herefield-123 
+0

注意:如果您正在嘗試從開始和結束中刪除^和$,這是一個文本的主體。 – rtpHarry

+0

嗨,我修改了問題 – Jorge

+0

根據集體反饋更新了回覆 – rtpHarry