繁体   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