這是用於驗證我的系統上的用戶名。由「。-_」分隔的單詞的正則表達式,包括至少一個字母
每個用戶名都可以包含這些符號「。-_」,但由上述符號分隔的單詞不能僅爲數字。
一個例子是
無效:
123.as-as123
123.AS-aS123
有效期:
a123.as-as123
A123.AS-aS123
這是用於驗證我的系統上的用戶名。由「。-_」分隔的單詞的正則表達式,包括至少一個字母
每個用戶名都可以包含這些符號「。-_」,但由上述符號分隔的單詞不能僅爲數字。
一個例子是
無效:
123.as-as123
123.AS-aS123
有效期:
a123.as-as123
A123.AS-aS123
我相信這會工作,如果我正確地理解您的需求:
/^(?:[a-z0-9]*[a-z][a-z0-9]*[.\-_])*[a-z0-9]*[a-z][a-z0-9]*$/i
它匹配零個或多個以.
,-
或_
結尾且至少需要一個字母的字母/數字組。然後它匹配最後一組字母/數字,至少需要一個字母。
它不區分大小寫(這就是最後的i
),所以它也會匹配大寫字母。 (這個語法至少在Perl和PHP中起作用,在其他語言中,可能需要以稍微不同的方式應用此選項,但不區分大小寫總是可用的)。
人們可能會傾向於縮短這樣的:
/^(?:[a-z0-9]*[a-z][a-z0-9]*[.\-_]?)+$/i
然而,這是不太理想的,因爲使[.\-_]
可選使得它在它可以嘗試搭配方式太多的靈活性。它可能需要運行一個失敗模式的大量案例。
你可以使用這4個正則表達式來檢查。
^([0-9]*?)[\.\-\_] // Check if number is present between start and symbols
[\.\-\_]([0-9]*?)[\.\-\_] // Check if number is present between these symbols
[\.\-\_]([0-9]*)$ // Check if number is present between these symbols and eol
^([0-9]+)$ // Check only if number is present
如果其中任何一個的輸出是「否」,則打印無效,否則有效。
你的用戶名可以不包含任何這些符號嗎?或者它必須包含所有這些?並且這些符號中的任何一個都可以回到原點? – 2013-02-12 11:32:25
@RohitJain它可以是其中的任何一個。 – Peymankh 2013-02-12 11:32:53