[toc]

前端–JavaScript正则表达式

JavaScript诞生的目的:验证表单的合法性。验证数据的合法性,还可以使用正则表达式。

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

  • i 是忽略大小写

    • | 或的意思
    • []或 [abc] 表示的是a或者b或者c,代表一个字符。
    • [a-z] 表示小a-小z中的任何一个
    • [A-Z] 大A-大Z中的任何一个
    • [0-9] 表示任意数字中的一个。
    • ^ 在[]中表示取反。
    • () 分组
    • ^ a以a开头
    • {m} 表示连续出现m次
    • {m,} 连续m以及大于m此
    • {m,n} 连续出现m到n次
    • ? 0次或者1次
    • * 0到多次
  • + 1到多次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
var reg = new RegExp("d", "i");//字符串包含d,忽略大小写。
reg = new RegExp("cd");//z字符串包含cd,不忽略大小写。
reg = new RegExp("a(c|b)c");//字符串中包含a或者b;
reg = new RegExp("a[abc]a");// 匹配 aaa或者aba 或者aca
reg = /abc/i;//==reg=new RegExp("abc","i");//匹配abc 忽略大小写
reg = /a[abcdefghijklmnopqrstuvwxyz0123456789_]a/; // 匹配a(中间字母数字下划线)a 区分大小写
reg = /a[a-zA-Z0-9]a/;//匹配的是a(字母数字)a
reg = /[^a-zA-Z0-9_]/; //匹配非字母数字
reg = /(ab)|c/;//匹配 ab 或者abc 或者a
reg = /aaaaa/; //匹配5个a(只要包含五个a就匹配) == /a{5}/
reg = /a{5}/;//匹配5个a(只要包含五个a就匹配)
reg = /^a{5}/;//匹配5个a要以a开头(只要包含五个a就匹配)
reg = /^a{5}$/; //$ 以a结尾 而且长度为5 只能是五个a
reg = /^a{3,5}$/; //匹配3-5个a字母。
reg = /^a{3,}$/; //匹配3个及以上的a字母
reg = /^to?m$/;// ==reg = /^to{0,1}m$/; ? 0次或者1次
reg = /^mmA+$/;//== reg = /^A{1,}$/;
reg = /^mmA*$/; // == /^mmA{0,}$/

var str = "mmA";
console.log(reg.test(str));
</script>
  • \w 数字字母下划线。 word
  • \W 非 数字字符下划线 取反\w
  • \ 转义字符。
  • . 通配符号,代表的是任意字符。
  • \d 匹配数字 digit
  • \D 匹配非数字 取反\d
  • \s 空白字符,空格
  • \S 非空格
  • \n 换行换行
  • \t
  • \b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
$(function () {
var reg = /^[A-Za-z0-9_]{3,5}$/;
reg = /^\w{3,5}$/;
reg = /^\W{3,5}$/;
reg = /^a\/b$/;
reg = /^a.b$/;
reg = /^a\.b$/;
reg = /^\d{11}$/;
reg = /^\D{1}$/;
reg = /^a\sb$/;
reg = /^a\Sb$/;
var str = "ahb";
console.log(reg.test(str));
});
</script>

电话号码正则表达式

1
2
3
4
5
6
7
8
<script>
$(function () {
var phoneReg=/^1\d{10}$/; //手机号
phoneReg=/^0\d{2,3}-\d{8}$/; //座机号码
var str="025-83765566";
console.log(phoneReg.test(str));
});
</script>

邮箱匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>
/**
* 2656559626@qq.com
* yushanbo@justweb.cn
* com
* cn
* com.cn
* .xin
* .中国
* .我爱你
*/
$(function () {
var reg=/^\w{5,20}@\w+(\.\w{2,}){1,2}$/;
var str="2556559626@qq.com.cn"
console.log(reg.test(str));
});
</script>

字符串的正则函数

  1. split(正则) :根据正则表达式进行字符串的切割
  2. match(); 能够匹配正则数据,一个或者多个 ,匹配多个的时候,加上一个//g;全局匹配
  3. search(); 能够根据正则匹配数据,返回匹配到的数据在字符串中的索引,indexOf();
  4. replace(“正则”,“替换的数据”); 能够匹配正则的数据,一个到多个,如果是多个用g,全局匹配替换。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>
$(function () {
// var str="嘻嘻,哈哈,啦啦";
// var arr=str.split(",");
// console.log(arr);
var str = "嘻嘻,哈哈a啦啦";
var arr = str.split(/[,|a]/);
console.log(arr);
str = "上门服务,查水表,电话:18753275338,上门服务,查水表,电话:18753275339,上门服务,查水表,电话:17625959544,上门服务,查水表,电话:18868108287,上门服务,查水表,电话:13585287895,上门服务,查水表,电话:18753275300上门服务,查水表,电话:18753275338上门服务,查水表,电话:18753275338,上门服务,查水表,电话:18753275338,上门服务,查水表,电话:18753275318"

console.log(str.match(/1\d{10}/g));//为什么1前面不加^
console.log(str.search(/1\d{10}/g));
console.log(str.replace(/1\d{10}/g, "******"));


});
</script>