JavaScript中的正则表达式以及和Java的区别简述

JavaScript中的正则表达式

什么是正则表达式?

正则表达式是由一个字符序列形成的搜索模式。当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。

语法:

// 语法:/正则表达式主体/修饰符(可选)
var patt = /hello/i

解析:hello是用于检索的正则表达式主体,i表示搜索不区分大小写的修饰符
search()、replace()方法:
search方法可以使用字符串作为参数,字符串参数会转换为正则表达式,该方法返回在字符串中出现的第一个匹配的位置。

注意:全局匹配正则表达式(带参数g)在使用search()方法时不起作用。

replace() 替换字符串中的某一部分。它可以用另一个字符串(第二个参数)来替换某个子串(第一个参数)的所有匹配。第一个子串(被替换的子串)可以用正则表达式表示。这样符合正则表达式的子串将全部被替换。

var str = "hello world"; 
var n = str.search("world");
var str = document.getElementById("demo").innerHTML; 
var txt = str.replace(/hello/i,"hi");

正则表达式修饰符:

修饰符描述
i执行对大小写不敏感的匹配。
g执行全局匹配
m执行多行匹配

正则表达式模式:

①方括号用于查找某个范围内的字符:
如[abc]表示a或b或c ,[0-9]表示0-9的任意数字。
②元字符是拥有特殊含义的字符:

元字符描述
\d查找数字
\s查找空白字符
\b匹配单词边界

③量词

量词描述
n+匹配任何包含至少一个n的字符串
n*匹配任何包含零个或多个n的字符串
n?匹配任何包含零个或一个n的字符串

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(前面加反斜\)

compile() 用于编译、改变和重新编译正则表达式

var str="Every man in the world! Every woman on earth!";
var patt=/man/g; // 注意,不能加双引号,加了就变成字符串没有意义了
var str2=str.replace(patt,"person");
document.write(str2+"<br>");
//运行结果:Every person in the world! Every woperson on earth!
patt=/(wo)?man/g; // 注意,不能加双引号,加了就变成字符串没有意义了
patt.compile(patt); 
str2=str.replace(patt,"person"); 
document.write(str2);
//运行结果: Every person in the world! Every person on earth!

test(): 搜索字符串指定的值,根据结果并返回真或假。

		var re = new RegExp(“ell”);
		document.write(re.test(“helloword!);
		//运行结果:true

正则表达式里的.*
a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。

正则里的.*?
a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab。这被称为懒惰匹配。

js常见使用方式和Java一致,以下记录了一些关于正则表达式js和java的不同之处:
❤ java的字符串比js的字符串多一个转义符号“\”
JavaScript中如下:

if(!(/^1[3-9]\d{9}$/.test(mobile))){
            alert("请输入正确的手机号");
           
        } else {
       
            alert("true");
        }

Java中如下:

    if (!mobile.matches("1([3-9])(\\d{9})")) { //多了一个转义字符
        result.setMessage(-1, "请输入正确的手机号码");
        out.print(result);
        return;
    }

注意: 如果js用显示方式定义正则表达式的话,两者的字符串没区别。
正则示例:
1、用户名正则:

//用户名正则,4到16位(字母,数字,下划线,减号)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
//输出 true
console.log(uPattern.test("iFat3"));

2、密码强度正则:

//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
//输出 true
console.log("=="+pPattern.test("iFat3#"));

3、Email正则:

//Email正则
var ePattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
//输出 true
console.log(ePattern.test("65974040@qq.com"));

4、手机号正则:

//手机号正则
var mPattern = /^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$/;
//输出 true
console.log(mPattern.test("18600000000"));

5、身份证号正则:

//身份证号(18位)正则
var cP = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
//输出 true
console.log(cP.test("11010519880605371X"));

6、URL正则

//URL正则
var urlP= /^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
//输出 true
console.log(urlP.test("http://42du.cn"));

7、车牌号正则

//车牌号正则
var cPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
//输出 true
console.log(cPattern.test("京K39006"));

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值