簡體   English   中英

正則表達式開頭沒有空格或數字

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM