正则表达式---看着很难却很方便好用的工具

Posted 柒@海枫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式---看着很难却很方便好用的工具相关的知识,希望对你有一定的参考价值。

    正则表达式,我们初见可能会被它那些复杂的表达式吓倒,但是我要告诉大家的是,只要一步一步来,你会发现正则表达式其实并没有你想像中的那么困难,它的出现会让我们写出的代码简介很多,并且验证内容会非常准确。既然使用正则表达式可以方便的验证数据,那么什么是正则表达式呢?

1.定义:

在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码RegExp对象是Regular Expression(正则表达式)的缩写。

注:正则表达式引擎通常会提供一个“测试指定的字符串是否匹配一个正则表达式”的方法,如javascript里的RegExp.test()方法或.NET里的Regex.IsMatch()方法。这里的匹配是指是字符串里有没有符合表达式规则的部分。如果不使用^$的话,对于\\d{5,12}而言,使用这样的方法就只能保证字符串里包含5到12连续位数字,而不是整个字符串就是5到12位数字

2.学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。下面给出了不少简单的例子,并对它们作了详细的说明。

假设你在一篇英文小说里查找hi,你可以使用正则表达式hi通常,处理正则表达式的工具会提供一个忽略大小写的选项(/i),如果选中了这个选项,它可以匹配hi,HI,Hi,hI这四种情况中的任意一种。

不幸的是,很多单词里包含hi这两个连续的字符,比如him,history,high等等。用hi来查找的话,这里边的hi也会被找出来。如果要精确地查找hi这个单词的话,我们应该使用\\bhi\\b

是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是\\b并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置

假如你要找的是hi后面不远处跟着一个Lucy,你应该用\\bhi\\b.*\\bLucy\\b

 

使用了^$,所以输入的整个字符串都要用来和\\d{5,12}来匹配,也就是说整个输入必须是5到12个数字,因此如果输入的QQ号能匹配这个正则表达式的话,那就符合要求了。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script src="js/jQuery1.11.1.js"></script>
    <script type="text/javascript">
        $(function () {
            var value = $("#mybutton").val();
            var regvalue = /^\\d{5,12}$/;
            if (regvalue.test(value) == true) {
                alert(\'验证成功!\');
            }
        })
    </script>
</head>
<body>
   
    <input type="button" id="mybutton" value="564165"/ >
</body>

结果:

 

3.字符转义

如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\\来取消这些字符的特殊意义。因此,你应该使用\\.\\*。当然,要查找\\本身,你也得用\\\\.

例如:deerchao\\.net匹配deerchao.netC:\\\\Windows匹配C:\\Windows

4.分支条件

则表达式里的分支条件指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开。听不明白?没关系,看例子:

0\\d{2}-\\d{8}|0\\d{3}-\\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)

5.分组

你可以用小括号来指定子表达式(也叫做分组)

例:\\d{1,3}\\.){3}\\d{1,3}是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\\d{1,3}匹配1到3位的数字(\\d{1,3}\\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\\d{1,3})。

6.反义

  今天的讲解就到这里,希望大家有所收获,正则表达式最重要的是练习,练习多了,自然就用的好了(熟能生巧哟),

下次见!!!

 

以上是关于正则表达式---看着很难却很方便好用的工具的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式源远

正则表达式工具

小白都能用的正则表达式生成工具...i Hate Regex

eclipsemyeclipse中删除所有注释正则表达式

正则表达式与文件格式化处理

很不错的正则表达式学习教程和工具