ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

正则表达式

2022-01-14 19:33:00  阅读:117  来源: 互联网

标签:返回 匹配 正则表达式 捕获 字符串 RegExp


产生正则表达式的方式
1. var re = new RegExp("pattern",["flags"]); // 这种方式比较好
pattern :正则表达式字符串 // 注意这是字符串,里面的反斜杠("\")需要连写两个来表示一个,因为会转义,如 new RegExp("\\d") 匹配一个数字
flags: // flags 可以多个一起使用, 如 new RegExp("\\w", 'gm')
g global (全文查找出现的所有 pattern)
i ignoreCase (忽略大小写)
m multiLine (多行查找)

2. 使用 正斜杠("/") 括起来
var re = /pattern/flags
pattern 和 flags 的含义跟 new RegExp 的一样。
只不过,这里的 pattern 不是字符串,不会转义,所以里面的反斜杠("\")不需要连写两个。如 /\d/ 表示匹配一个数字
这两种方式产生的正则表达式都是一样的,如 new RegExp("(f+)d+(s+)") 也可以写成: /(f+)d+(s+)/

正则表达式的常用函数:
re.exec(字符串); // 返回匹配数组(下标0是整个匹配到的字符串,下标1是第1个捕获组,下标2是第2个捕获组...),没有匹配时返回 null
re.test(字符串); // 返回 true, 或者 false,表示是否匹配
另外,字符串也有可运用正则表达式的:
字符串.replace(正则表达式, 要替换的字符串); // 要替换的字符串里面,也可以使用 $1, $2 作为捕获组
字符串.match(正则表达式); // 同 re.exec,返回匹配数组,无法匹配则返回null,[0]是匹配的整个字符串,[1]是匹配的第一个捕获组,[2]是第二个捕获组...

RegExp 的属性
$1, ..., $9 捕获组,$1是匹配的第一个捕获组(即第一个用小括号括起来的内容),$2是第二个捕获组... 如:
if ( new RegExp("(f+)d+(s+)").test("ddfffdddsss") ) {
alert(RegExp.$1 + ", " + RegExp.$2); // 提示出: fff, sss
}
$_, input 返回输入的内容
如: /^1((3\d)|(5[036789])|(8[89]))\d{8}$/.exec("13595044124"); alert(RegExp.$_); alert(RegExp.input); // 提示出: 13595044124

 

常用的正则表达式 元字符
\ 转义符
. 匹配除换行符以外的任意字符
| 或符号
\w 匹配字母或数字或下划线 (大写的通常是小写的反义)
\W 匹配任意不是字母,数字,下划线的字符
\s 匹配任意的空白符
\S 匹配任意不是空白符的字符
\d 匹配数字
\D 匹配任意非数字的字符
\b 匹配单词的开始或结束
\B 匹配不是单词开头或结束的位置
^ 匹配字符串的开始
$ 匹配字符串的结束
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
\数字 表示捕获组,要求与第几个捕获组相同
常用的限定符
* 重复零次或多次
+ 重复一次或多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

常用正则表达式
/^[-]?\d+([.]?\d*)$/ //数字
/^[-]?\d+$/ //整数
/^[0-9a-zA-Z]{5,16}$/ //用户名(区分大小写,5-16位)
/^[\u4e00-\u9fa5]+$/ //中文
/^(\w){6,20}$/; //校验密码:只能输入6-20个字母、数字、下划线
//电话号码(手機號碼):像(010)88886666,022-22334455,029 1234-5678,010 3523922轉259,3523922。04-36018188/23051418 等
/^([((]?0\d{1,6}[)) -]?)?(\d{5,30}|((\d{4}[ -]){1,7}\d{1,4}))([ -#((轉转]?\d{1,6}[))]?)?$/;
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/ //十六进制值
/^([a-zA-Z\d_\.-]+)@([a-zA-Z\d]+\.)+[a-zA-Z\d]{2,6}$/ //电子邮箱
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ //URL
//下句是 IP 地址: 1.0.0.1 到 255.255.255.255,每段不能用“0”打头
/^([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.(([\d]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))\.){2}([1-9]|([1-9]\d)|(1\d\d)|(2([0-4]\d|5[0-5])))$/
/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ //HTML 标签

"str".replace(/(^\s*)|(\s*$)/g, ""); // 去除前后空格

//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字符串
function isRegisterUserName(s) {
var patrn = /^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
return !!(patrn.exec(s)); //返回匹配数组,没有匹配时返回null;所以非两次以返回boolean值
}
//防止SQL注入,返回true表示通过验证,返回false表示验证不通过
function IsValid( oField ) {
re= /select|update|delete|exec|count|'|"|=|;|>|<|%/i;
$sMsg = "请您不要在参数中输入特殊字符和SQL关键字!";
if ( re.test(oField.value) ) {
alert( $sMsg );
return false;
}
return true;
}

标签:返回,匹配,正则表达式,捕获,字符串,RegExp
来源: https://www.cnblogs.com/jiali-fan/p/15803263.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有