正则表达式整理

时间:2021-07-15 15:51:31

随着正则用的越来越普遍,今天正好有时间整理一下

https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin

基础概念上面文章中有

正则表达式(Regular Expression)是一种文本模式,包括普通字符和特殊字符(元字符)

正则表达式常见的方法

test()方法:用于检测一个字符串是否匹配某个模式。语法:regexp.test(str);

test()方法检查是否与给出的表达式模式相匹配,如果是则返回true,否则返回false

举个简单的实例

var str="abc123def";   //字符串
var patt=/\d{3}/;  //正则表达式(包含3个数字)
document.write(patt.test(str));  //true

match()方法:可在字符串内找到一个或多个指定正则表达式匹配的子字符串。方法返回值存放在匹配结果的数组中

var str="abc123def";
var patt=/\d{3}/;
document.write(str.match(patt)); //123   返回值

exec()方法:和match()非常相似,区别它是唯一一种获得全局模式的完整模式匹配信息的方法。

exec方法每次只匹配一个;在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置.

var str = "Visit W3School, W3School is a place to study web technology."; 
var patt = new RegExp("W3School","g"); var result; while ((result = patt.exec(str)) != null) { document.write(result); document.write("<br />"); document.write(patt.lastIndex); }
//W3School 14 W3School 24

 例举几个常用的,具体看一看上面那个链接文章

[xyz] [a-z] [A-Z] [0-9] 这个是一个范围 只要在这个范围内就匹配 比如[xyz] 可以匹配"x292393"或者"y887"

+ (大于等于1次)

var str="去年是2018年,今年是2019年";
var patt=/\d+/g; //匹配字符串里面所有数字  这样写也可以 var patt=/[0-9]+/g; //匹配字符串里面所有数字
document.write(str.match(patt).join("")) //20182019

? 通配符匹配0或者1个字符

* 0或者多个字符

正则表达式整理

var str = "1232222abc";
var patt1 = /^[0-9]+abc$/;
document.write(str.match(patt1));  //1232222abc

 

[a-z] //匹配所有小写字母
[A-Z] //匹配所有的大写字母
[a-zA-Z] //匹配所有的数字
[0-9] //匹配所有的数字
[0-9\.\-] //匹配所有的数字,句号和减号
\d  //匹配一个数字字符
\D  //匹配一个非数字字符
\s  //匹配任何不可见字符
\S //匹配任何可见字符
\w //匹配包括下划线的任何单词字符  
\W  //匹配任何非单词字符
\f //匹配一个换页符
\r //匹配一个回车符
\t //匹配一个制表符
\n //匹配一个换行符
[\f\r\t\n]
^[a-z][0-9]$ //

var str="a1";
var str1="aw2";
document.write(str.match(/^[a-z][0-9]$/)) //a1
document.write(str1.match(/^[a-z][0-9]$/)) //null
 
[^0-9] //除了数字紫外的所有字符这里的^表示非
正则表达式整理
^[a-zA-Z_]$ //所有的字母和下划线
^a$ //字母a
^a{4}$ //4个字母a
^a{2,4}$ //aa,aaa,aaaa
^a{2,}$ //包含多于两个a的字符串
. 号 //匹配除“\n”和"\r"之外的任何单个字符。
{n}  //匹配确认的n次
{n,} //至少匹配n次
{n,m} //最少匹配n次且最多匹配m次
 
^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串
^[1-9][0-9]{0,}$ //所有正整数
^\-{0,1}[0-9]{1,}$ //所有整数
^[-]?[0-9]+(\.[0-9]+)?$ // 所有的浮点数
 
 常用实例 用test()方法
数字:^[0-9]*$  //只有字符串全部是数字才会true
3位的数字   /^\d{3}$/   
最少3位的数字  /^\d{3,}$/
3-5位的数字  /^\d{3,5}$/
正整数  /^[1-9][0-9]*$/
汉字: /^[\u4e00-\u9fa5]{0,}$/
英文和数字 :/^[A-Za-z0-9]+$/