对于程序员来说,最有用的正则表达式是什么?

时间:2009-09-19 23:44:34

标签: regex

我是正则表达式的新手,刚开始学习一些。我想知道程序员有哪些最常用的正则表达式。换句话说,我想知道什么是最有用的正则表达式?他们怎样才能帮助我完成我的日常任务?我希望知道正则表达式对每天编程有用,而不是偶尔使用正则表达式,例如电子邮件地址匹配。

任何?谢谢。

编辑:大多数答案都包含与电子邮件地址,网址,日期,电话号码等匹配的正则表达式。请注意,并非所有程序员都必须在日常任务中担心这些问题。我想知道正则表达式的一些更通用的用法,如果有的话,一般(可能)使用哪些程序员,无论他们使用的是哪种语言。

10 个答案:

答案 0 :(得分:35)

的正则表达式示例

小数点输入

  1. 正整数^\d+$

  2. 负整数^-\d+$

  3. 整数^-?\d+$

  4. 正数^\d*\.?\d+$

  5. 负数^-\d*\.?\d+$

  6. 正数或负数^-?\d*\.?\d+$

  7. 电话号码^\+?[\d\s]{3,}$

  8. 代码为^\+?[\d\s]+\(?[\d\s]{10,}$

  9. 的手机
  10. 1900-2099年^(19|20)\d{2}$

  11. 日期(dd mm yyyy,d / m / yyyy等)

    ^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$
    
  12. IP v4:

        ^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
    

    字母输入

    • 个人姓名^[\w.']{2,}(\s[\w.']{2,})+$
    • 用户名^[\w\d_.]{4,}$
    • 密码至少6个符号^.{6,}$
    • 密码或空输入^.{6,}$|^$
    • 电子邮件^[_]*([a-z0-9]+(\.|_*)?)+@([a-z][a-z0-9-]+(\.|-*\.))+[a-z]{2,6}$
    • ^([a-z][a-z0-9-]+(\.|-*\.))+[a-z]{2,6}$

    其他正则表达式   - 不匹配输入^$   - 匹配空白输入^\s\t*$   - 匹配新行[\r\n]|$   - 匹配空格^\s+$   - 匹配网址= ^http\:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,3}$

答案 1 :(得分:5)

我会对此采取不同的观点,并说知道何时使用正则表达式以及何时不使用它们是最有帮助的。

例如,想象一下这个问题:“弄清楚字符串是否以空白字符结尾。”这里可以使用正则表达式 ,但如果您使用的是C#,则此代码更快:

bool EndsWithWhitespace(string s)
{
    return !string.IsNullOrEmpty(s) && char.IsWhiteSpace(s[s.Length - 1]);
}

正则表达式非常强大,重要的是要知道它们太强强大的功能,以解决您尝试解决的问题。

答案 2 :(得分:4)

考虑需要验证的输入字段,例如邮政编码,电话号码,等等。正则表达式非常用于验证这些。另外,看看这个site,其中包含许多教程,以及更多示例,其中一些我接下来会介绍:

  

数字范围。自定期   表达式使用文本而不是   数字,匹配特定数字   范围需要一点额外的照顾。

     

匹配浮点数。此外   说明了常见的错误   一切都在常规   表达式可选。

     

匹配电子邮件地址。有一个   很多关于什么的争议   正确的正则表达式匹配电子邮件地址。   这是一个完美的例子   你需要知道你究竟是什么   试图匹配(什么不是),和   这总是需要权衡   在正则表达式的复杂性和准确性之间。

     

匹配有效日期。常规   表达式匹配31-12-1999但是   不是31-13-1999。

     

查找或验证信用卡   数字。验证信用卡号码   在您的订单上输入。找   文件中的信用卡号码   安全审计。

还有很多很多可能的应用程序。

答案 3 :(得分:3)

  • 电子邮件地址
  • 网站
  • 文件的路径
  • 电话号码/传真/邮政和其他商业用号码(化学号码等)
  • 文件内容(检查文件是否可以是有效的XML文件,...)
  • 代码修改和格式化(替换)
  • 数据类型(GUID,整数解析,......)
  • ...

答案 4 :(得分:3)

最后关闭标签

([^<]*)

严重。我经常使用 way 的组合以获得舒适感...我们都应该使用正则表达式:en for peg-parsers,特别是因为它们有一个很好的正则表达式的语法风格。

答案 5 :(得分:2)

嗯......我认为你的问题是错的。听起来你问的是正则表达式可能/应该是一个编码的一部分,或几乎如此,就像数学运算符一样。真的,如果你的代码在正则表达式上依赖普遍,你可能会做一些非常错误的事情。为了在整个代码中普遍使用,您希望使用比常规表达式管理的字符串更好地定义和更高效的数据结构。

与你所要求的最接近的东西对我来说很有意义,就像/\s+/一样,用于在任意数量的空格上分割字符串。

答案 6 :(得分:2)

这有点像向程序员询问“最有用的单词”?

这取决于你将要使用它们,它取决于哪种语言。 而你没有说

一些程序员永远不必担心匹配电子邮件地址,电话号码,邮政编码和IP地址。

我的

副本
  

掌握正则表达式,O'Reilly,第3版,2006

为不同语言使用的正则表达式提供了大量空间。

这是一个很好的参考,但我发现第二版更具可读性。

答案 7 :(得分:1)

  

他们如何在我的日常工作中帮助我?

程序员的日常使用可以包括

  • 搜索/替换样本数据以进行测试
  • 在日志文件中搜索字符串模式(例如,例外)
  • 在目录结构中搜索某种类型的文件(就像dir *.txt一样简单)

仅举几例

答案 8 :(得分:1)

  1. 电子邮件
  2. 网站网址
  3. 电话号码
  4. 邮政编码
  5. Alpha数字,(用户名由字母数字组成,仅以字母字符开头
  6. IP地址

答案 9 :(得分:1)

这完全取决于您所使用的域名。对于某些域名,它将是电话号码和SSN,其他则是电子邮件地址,IP地址,URL。最重要的是知道何时需要正则表达式,何时不需要正则表达式。例如,如果您尝试解析XML或HTML文件中的数据,通常最好使用专门用于解析该内容的库,而不是自己尝试编写内容。