簡體   English   中英

字符串模式,正則表達式

[英]String pattern, regular expression

我想學習一些使用string patterns東西。

對於我有這封電子郵件

^[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.[a-z]+

它應該沒問題,還是要做得更好? 我不想要任何復雜的東西,只是基本的“友好可讀”。 有沒有辦法如何通過表達式限制2-3個字符的電子郵件域?

對於URL,我開始使用類似的東西

^(http|https)://[a-zA-Z0-9]+\\.[a-z]+(/[a-zA-Z0-9-_]+)+\\.[a-z_-]+

如何擴展URL參數的模式? 喜歡:

http://hostname.domain/uriFrag1/uriFrag2/someFilename.fileExt?param1=val1&param2=val2

任何想法如何簡單地制作模式?param1=val1&param2=val2

可以有參數,但它們不是強制性的。

^[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.[a-z]+

關於這一點的一些事情。 您可能還應該添加。 甚至可能是+,因為兩者在電子郵件中很常見(例如Gmail允許兩者)。 其次,您可以使用{from-to}限制字符數。 所以:

^[a-zA-Z0-9_]+@[a-zA-Z0-9]+\\.[a-z]{1,3}

但是,您可能要考慮不這樣做,因為剛出售的域名較長。 人們可能會出現.cloud或.email電子郵件,您不會想要將其拒之門外。

至於網址:

?param1 = val1這很容易匹配

(\\?[a-z]*=[a-z]*)*

但是,如果您確實想要獲取它們,則可能需要使用某些捕獲組。

(\\?([a-z]*)=([a-z]*))*

有很多方法可以做到這一點,我發現最簡單的方法就是split 由於所有參數都在問號后面傳遞,您可以簡單地:

String params = url.split("\\?")[1];

強烈建議在嘗試訪問元素之前檢查結果數組的邊界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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