字符串模式、正则表达式
String pattern, regular expression
我想学习一些有关使用 string patterns
的知识。
对于 电子邮件 我有
^[a-zA-Z0-9_]+@[a-zA-Z0-9]+\.[a-z]+
应该没问题,或者有什么可以改进的?
我不要任何复杂的东西,只要基本的 "friendly readable"。
有什么办法可以通过表达式限制 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¶m2=val2
有什么想法可以简单地为 ?param1=val1¶m2=val2
制作图案吗?
可以有参数,但不是必须的。
有很多方法可以做到这一点,我发现 split
最简单的一种。由于所有的参数都是在问号之后传递的,所以可以简单的:
String params = url.split("\?")[1];
强烈建议在尝试访问元素之前检查结果数组的边界。
^[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 电子邮件出现,而您不会想将他们拒之门外。
至于url:
?param1=val1 这很容易与
匹配
(\?[a-z]*=[a-z]*)*
但是,如果您确实想要获取它们,您可能需要使用一些捕获组。
(\?([a-z]*)=([a-z]*))*
我想学习一些有关使用 string patterns
的知识。
对于 电子邮件 我有
^[a-zA-Z0-9_]+@[a-zA-Z0-9]+\.[a-z]+
应该没问题,或者有什么可以改进的? 我不要任何复杂的东西,只要基本的 "friendly readable"。 有什么办法可以通过表达式限制 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¶m2=val2
有什么想法可以简单地为 ?param1=val1¶m2=val2
制作图案吗?
可以有参数,但不是必须的。
有很多方法可以做到这一点,我发现 split
最简单的一种。由于所有的参数都是在问号之后传递的,所以可以简单的:
String params = url.split("\?")[1];
强烈建议在尝试访问元素之前检查结果数组的边界。
^[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 电子邮件出现,而您不会想将他们拒之门外。
至于url:
?param1=val1 这很容易与
匹配(\?[a-z]*=[a-z]*)*
但是,如果您确实想要获取它们,您可能需要使用一些捕获组。
(\?([a-z]*)=([a-z]*))*