2012-04-21 61 views
1

我想定義一個「有效」的輸入,這是_-.將不會在年底或字符串的開頭允許的,只允許在中間。允許在中間的特定字符,而不是在開始前或結束

可接受的字符(位置無所謂):a-zA-Z0-9和所有的希伯來字母,我不知道如何讓他們在一個正則表達式

(也許只是硬編碼的所有的信嗎?) 不可接受的字符(位置無關緊要):除了我之前提供的特殊符號之外的所有符號。

我不知道如何建立這種模式,如果你能在每個部分中添加提示和意見,所以我就明白了。謝謝!

這不是功課,只是爲了自我學習。

+0

允許的符號,它們可以離開末端一個字符嗎?可以有兩個彼此相鄰嗎? (將「'一... Z'」是你會想要有效嗎?) – 2012-04-21 09:35:04

+0

這是一個偉大的一點,感謝指出了這一點:'a..b'是無效的,但是''a.b''是有效。使用@Yorye提供的模式,我該如何應用此設置?提供模式:'@ 「^ [A-ZA-Z \ dא-ת] [。\ S \ W \א-ת\ - ] * [A-ZA-Z \ dא-ת] $」' – Novak 2012-04-21 09:40:58

回答

1
@"^[a-zA-Z\dא-ת][a-zA-Z_\-\.\dא-ת]*[a-zA-Z\dא-ת]$" 

如果你想允許 「_.-」 沒有重複:

@"^[a-zA-Z\dא-ת]([a-zA-Z\dא-ת]+[_\.\-]?)*[a-zA-Z\dא-ת]$" 

如果你想允許在中間的空格:

@"^[a-zA-Z\dא-ת][a-zA-Z_\-\.\d\sא-ת]*[a-zA-Z\dא-ת]$" 

如果你想空格+「_.-」無重複:

@"^[a-zA-Z\dא-ת]([a-zA-Z\d\sא-ת]+[_\.\-]?)*[a-zA-Z\dא-ת]$" 

因此,使用正則表達式:

var isValid = Regex.IsMatch(input, @"..."); 

另外,如果你打算使用正則表達式多次在代碼中,我建議增加RegexOptions.Compiled標誌,以提高速度。

var isValid = Regex.IsMatch(input, @"...", RegexOptions.Compiled); 
+0

我已經測試你的代碼之前,沒有工作,但新的。在正則表達式中,\ w'定義..?中間部分的最後部分使用'*'是什麼?謝謝你的幫助。 – Novak 2012-04-21 09:34:01

+0

\ w代表「a-zA-Z0-9_」,*表示[]部分可以出現零次或更多次。 – SimpleVar 2012-04-21 09:34:56

+0

@GuyDavid我再次編輯它,因爲我忘記了在中間的點。這現在是最終的。 – SimpleVar 2012-04-21 09:36:37

相關問題