[英]Regex for no space or digit in the beginning
我正在嘗試創建一個不允許在開頭使用數字或空格的正則表達式。 我試過做這樣的事情:
^[\S][\D][\w+_.-]+@{1}[\w_.-]+\.{1}[a-zA-z]*$
但是,當我使用4test@example.com
它說這是一封電子郵件,但是當我使用4test@example.com
它說這不是一封電子郵件。 在這兩種情況下,我都希望它說它不是電子郵件。 不應該有空格或數字,我怎樣才能將這兩者結合起來: [\\S][\\D]
使其正常工作?
在你的模式中\\S
將匹配任何非空白字符,它也將匹配一個數字。
如評論中所述,您可以使用否定字符類排除匹配數字。 如果在此之后重復字符類 1+ 次,@ 之前的部分應至少包含 2 個字符。
如果最小值應該是 1 個字符,則可以使用*
而不是+
。
請注意,您不需要{1}
並且[a-zA-z]
可以匹配多於[a-zA-Z]
如果您在末尾使用*
重復字符類[a-zA-Z]*
0+ 次,則匹配也可能僅匹配一個點。
您可以將模式更新為:
^[^\d\s][\w_.-]*@[\w_.-]+\.[a-zA-Z]+$
如果使用\\S
太寬泛,另一種選擇可能是使用否定前瞻斷言不是數字,然后重復字符類 1+ 次:
^(?!\d)[\w_.-]+@[\w_.-]+\.[a-zA-Z]+$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.