码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2015-11-09 07:08:23      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

一、基本规则及基本例子


1、/正则表达式装在两个斜杠里面/

2、^ 表示开头 $结尾

3、[中括号里面装过滤的范围]如:[A-Za-z0-9]

4、不能用空格符号。

5、[]+ +号表示可以出现1次到多次

6、[]? ?号表示可以出现0次或1次

7、[]* *号表示可以出现0次到多次

8、\d等价于0-9

9、 \s空格

10、\D取非数字

11、[0-9]{a,b}表示可以出现最少a个最多b个数字。


        /*qq邮箱*/
        var regExp=/^([0-9]{8,11})(@qq.com|@123.com)$/;
        /*座机号  如:0818(123)-12345678-0401(123)*/
//            var regExp=/^(\d{3,4}\-)?\d{8}(\-\d{3,4})?$/;
        /*手机号    开头三位固定*/
//            var regExp=/^(138|139|186)([0-9]{8})$/;
        /*身份证 前17位为数字 最后一位可以是数字或者大写x*/
//            var regExp=/^(\d{17})([0-9]|X)$/;
        /*年龄18-60岁  18 19要分开写*/
//            var regExp=/^([2-5][0-9])|18|19|60$/;
        alert(regExp.test("12345678910@123com"));

function check() {
    var str = "";
    var str1 = "";
    if(str.trim() == "") {
        return false;
       str.match()
    }

    if(!checkPassword(str1)) {
        return false;
    }

    if(!checkPassword(str2)) {

    }

}
//检查用户名 :数字,英文,下划线
function checkUsername(str) {
    var regExp = /^\d+$/g;
    if(regExp.test(str)) {
        return true;
    } else {
        return false;
    }
}

function checkPassword() {

}

二、用法

创建方式: 1、var regObj = new RegExp("pattern",[,"flags"]); pattern:必选项,正则表达式的字符串; flags:可选项,一些标志组合。 2、var regObj = /pattern/[flags];该方式不能用引号将pattern和flags括起来。 正则表示对象RegExp对象的方法: exec:检索字符中是正则表示的匹配,返回找到的值,并确定其位置。 eg: var str = "abcdefg"; var reg = /cd/; var bol = reg.exec(str); //成功返回cd,失败返回null; test:检索字符串中指定的值,返回true或false。 eg: var bol = reg.test(str); //成功返回true,失败返回false;

string对象的方法: match:找到一个或多个正则表示的匹配; search:检索与正则表达式相匹配的值; replace:替换与正则表达式匹配的字符串; split:把字符串分隔为字符串数字;//结果为一个数组;

RegExp对象的属性: global:RegExp对象是否具有标志g;//全局查询,如果没有这个属性则在第一次匹配之后就结束操作; ignorCase:RegExp对象是否具有标志i;//忽略大小写; multiline:RegExp对象是否具有标志m;//多行查询;


三、注意事项

1、string类型的数据都是正则表达式。

2、不能在正则表达式中随意添加空格字符,否则会出现不可预料的后果。正则表达式必须写在一行中,因为换行也会产生空格字符。

3、正则表达式使用时,容易表现出它的贪懒特性,即只对前半部分语句进行验证,后半部分语句不管对错均认为对,返回true。解决贪懒特性,可以加括号。

4、正则表达式使用“|”表示逻辑或关系,即“|”前后两部分任意一部分匹配正确即返回true。

5、测试正则表达式书写正确与否一般采用边界值测试方法。

6、使用正则表达式判断按钮事件是否发生时比较的是按钮的value值。按钮本身需设置一个value值,未选中按钮时value值在JS中获取到的是空字符串,只有选中按钮后这个value值才能在JS中获取到。因此通过判断JS中获取到的按钮value值是否与其在HTML中的值相等即可判断选中按钮事件是否发生。

主要方法: 1、test() 方法用于检测一个字符串是否匹配某个模式。 语法:RegExpObject.test(string) string:必需。要检测的字符串。

返回值:如果字符串 string 中含有与 RegExpObject 匹配的文本返回 true,否则返回 false。

2、match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

语法:stringObject.match(searchvalue) searchvalue:必需。规定要检索的字符串值。

返回值:存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。

3、split() 方法用于把一个字符串分割成字符串数组。 语法:stringObject.split(separator) separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。 返回值:一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括separator 自身。 注释:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。

4、replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。 语法:stringObject.replace(regexp/substr,replacement)

参数 描述 regexp/substr 必需。规定子字符串或要替换的模式的 RegExp 对象。 请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。 replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。 返回值:一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

7、量词: 量词 描述 n+ 匹配任何包含至少一个 n 的字符串。 n* 匹配任何包含零个或多个 n 的字符串。 n? 匹配任何包含零个或一个 n 的字符串。 n{X} 匹配包含 X 个 n 的序列的字符串。 n{X,Y} 匹配包含 X 到 Y 个 n 的序列的字符串。 n{X,} 匹配包含至少 X 个 n 的序列的字符串。 n$ 匹配任何结尾为 n 的字符串。 ^n 匹配任何开头为 n 的字符串。 ?=n 匹配任何其后紧接指定字符串 n 的字符串。 ?!n 匹配任何其后没有紧接指定字符串 n 的字符串。

8、元字符(Metacharacter)是拥有特殊含义的字符: 元字符 描述 . 查找单个字符,除了换行和行结束符。 \w 查找单词字符。 \W 查找非单词字符。 \d 查找数字。 \D 查找非数字字符。 \s 查找空白字符。 \S 查找非空白字符。

9、修饰符: 修饰符 描述 i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 m 执行多行匹配。

10、方括号,用于查找某个范围内的字符: 表达式 描述 [abc] 查找方括号之间的任何字符。 [^abc] 查找任何不在方括号之间的字符。

[0-9] 查找任何从 0 至 9 的数字。

[a-z] 查找任何从小写 a 到小写 z 的字符。

[A-Z] 查找任何从大写 A 到大写 Z 的字符。

[A-z] 查找任何从大写 A 到小写 z 的字符。

[adgk] 查找给定集合内的任何字符。

[^adgk] 查找给定集合外的任何字符。

(red|blue|green) 查找任意一个指定的选项。


四、常用正则表达式

整数或者小数:^[0-9]+.{0,1}[0-9]{0,2}$

只能输入数字:"^[0-9]*$"。

只能输入n位的数字:"^\d{n}$"。

只能输入至少n位的数字:"^\d{n,}$"。

只能输入m~n位的数字:。"^\d{m,n}$"

只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。

只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。

只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。

只能输入非零的正整数:"^+?[1-9][0-9]*$"。

只能输入非零的负整数:"^-[1-9][]0-9"*$。

只能输入长度为3的字符:"^.{3}$"。

只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。

只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。

只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。

只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。

只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。

验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。

验证是否含有^%&‘,;=?$\"等字符:"[^%&‘,;=?$\x22]+"。

只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"

验证Email地址:"^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$"。

验证InternetURL:"^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$"。

验证电话号码:"^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。

验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。

验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。

验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。 匹配中文字符的正则表达式: [\u4e00-\u9fa5]

正则表达式

标签:

原文地址:http://www.cnblogs.com/qzj229/p/4948889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!