目录
构造器函数方法使用方法如下:new RegExp("pattern"[, "flags"])
概述
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
正则表达式被用来匹配一组文字。
通常,它有两类用途:
- 数据有效性验证
- 查找和替换
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式。对 JScript 而言,分隔符为一对正斜杠 (/) 字符。
构造器函数方法使用方法如下:
new RegExp("pattern"[, "flags"])
- 文本格式: /pattern/flags
参数说明:
pattern :一个正则表达式文本
flags : 如果存在,将是以下值:
g : global match(全局匹配)
i :ignore case(忽略大小写)
gi : both global match and ignore case(匹配所有可能的值,也忽略大小写)
RegExp对象
- 属性
- global 默认和为false 搜索在找到第一位置就会停止,如果想全局搜索,设置为true
- igonignoreCase 默认值为false 是否区分大小写
- multiline 默认值为false,设置是否多行搜索
- lastIndex 默认值为0 搜索开始的索引位置
- source 用来存储正则表达式匹配模式的属性
- 方法
- test 语法:regExpObject.test(str) 参数:String指定字符串 检测字符串中是否存在于正则表达式对应的匹配,返回值默认布尔类型,每次执行只查找最多一个,找到返回true,否则为false
- /内容/ 在/ /之间写正则
js代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js正则表达式</title>
</head>
<body>
<script>
var regExp = new RegExp("javascript");
var b = regExp.test('this is Javascript course');
console.log(b)
/*加上 i 代表忽略大小写*/
// /[^abc]/ 代表正则表达式对象
regExp=/javascrIpt/i;
var b1 = regExp.test('this is jAvascript course');
console.log("加上 i 代表忽略大小写------"+b1)
//除了abc以外的的为true,abcd为true abc为false
b1=/[^abc]/.test('abc')
console.log("除了abc以外的为true,abcd为true abc为false----------"+b1);
//是否包含abc其中一个的
b1=/[abc]/.test('bddd')
console.log("是否包含abc其中一个的----------"+b1);
//是否包含数字0-9
b1=/[0-9]/.test('cdd00d')
console.log("是否包含数字0-9----------"+b1);
//是否包含字母a-z小写
b1=/[a-z]/.test('aaa')
console.log("是否包含小写字母a-z----------"+b1);
//是否包含字母A-Z大写
b1=/[A-Z]/.test('aaa')
console.log("是否包含大写字母a-z----------"+b1);
//是否同时包含字母a-z小写和大写字母A-Z
b1=/[a-z][A-Z]/.test('aaaA')
console.log("是否同时包含字母a-z小写和大写字母A-Z----------"+b1);
// 出现其中 一个就为true | 或者的意思 加上 i 意思是不区分大小写
b1=/java|php|sql/i.test('jAvac')
console.log("出现其中 一个就为true | 或者的意思----------"+b1);
//元字符
// . 表示除换行符以外的所有字符 \n 为换行符 结果为false 不是换行符任意为真
b1=/./.test('\n')
console.log(". 表示除换行符以外的所有字符 \\n 为换行符"+b1)
// \w 代表 [a-zA-Z0-9] 小w
b1=/\w/.test('!@#')
console.log("不包含为假-----"+b1)
// \s 查找空白字符 小s 如果字符串为空字符含为false
b1=/\s/.test('a a')
console.log("包含空白字符含为真-----"+b1)
//单词以什么结尾或者以什么开始
b1=/d\b/.test('dadada ad')
console.log("单词以什么结尾为真-----"+b1)
//量词
//一个单词出现多少次 {指定次数指定1 为2次或多次 从0开始} 所以四个dddd 为false 如果{1,3} 就是 大于等于2于等于4
b1=/d{4}/.test('dddd')
console.log("一个单词出现多少次-----"+b1)
//以什么开始
b1=/^4/.test('4dddd')
console.log("以什么开始-----"+b1)
//以什么结尾
b1=/4$/.test('dddd4')
console.log("以什么结尾-----"+b1)
</script>
</body>
</html>
搜索方法
或者
常用正则表达式
1、匹配所有的正数:^[0-9]+$
2、匹配所有的小数:^\-?[0-9]*\.?[0-9]*$
3、匹配所有的整数:^\-?[0-9]+$
4、提取信息中的中文字符串: [\u4e00-\u9fa5]* ;
5、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
6、提取信息中的中国手机号码:(86)*0*13\d{9}
7、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
8、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
9、提取信息中的中国身份证号码:\d{18}|\d{15}
10、提取信息中的任何数字:(-?\d*)(\.\d+)?
11、匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
12、匹配邮箱:/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/
则表达式用于字符串处理、表单验证等场合,实用高效。
现将一些常用的表达式收集于此,以备不时之需。
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了
匹配双字节字符(包括汉字在 内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
匹配空白行的正 则表达式:\n\s*\r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(\S*?) [^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对 于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空 格、制表符、换页符等等),非常有用的表达式
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.] \w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA- z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16 字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号 码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
匹 配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]\d{5}(?! \d)
评注:中国邮政编码为6位数字
匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位
匹 配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用
匹配特定数字:
^[1-9]\d*$ //匹配正整数
^-[1-9]\d*$ //匹配负整数
^-?[1-9]\d*$ //匹配整数
^[1-9]\d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ //匹配非负浮点数(正浮点 数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮点数(负浮点 数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:
^[A-Za-z]+$ //匹配由26 个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母 的小写组成的字符串
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
^\w+$ //匹配由数字、26个 英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式
加了时间验证的
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$
注册例子:
用户在进行注册的时候会输入一些内容,但是有些用户会输入一些不合法的内容,这样会导致服务器的压力过大,此时我们需要对用户输入的内容进行一个校验(前端校验和后台校验)
Html部分代码:
为表单绑定一个事件
<form action="#" method="get" onsubmit="return checkForm()">
对需要校验的输入项目定义id
<input type="text" name="user" id="user" />
Javascript部分代码
<script type="text/javascript">
function checkForm(){
/*校验用户名*/
//alert("aa");
//获取用户输入的数据
var uValue = document.getElementById("user").value;
//alert(uValue);
if(uValue==""){
//给出错误提示信息
alert("用户名不能为空!");
return flase;
}
/*校验邮箱*/
var Evalue = document.getElementById("email").value;
if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/.test(Evalue)){
//给出错误提示信息
alert("邮箱格式不正确!");
return false;
}
}
</script>