字符串模式,正则表达式

时间:2015-09-02 13:45:11

标签: java regex string expression

我想了解一下使用string patterns

对于电子邮件我有

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

应该没问题,还是要做得更好? 我不想要任何复杂的东西,只是基本的"友好的可读性#34;。 有没有办法如何通过表达式限制2-3个字符的电子邮件域?

对于网址,我开始使用类似的内容

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

如何扩展网址参数的模式?喜欢:

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

如何简单地为?param1=val1&param2=val2制作模式?

可以有参数,但它们不是强制性的。

2 个答案:

答案 0 :(得分:3)

^[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]*))*

答案 1 :(得分:0)

有很多方法可以做到这一点,我发现split是最简单的方法。由于所有参数都在问号后面传递,您可以简单地:

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

强烈建议在尝试访问元素之前检查结果数组的边界。