JavaScript学习之正则表达式(二)

在JavaScript使用正则表达式

先上简单代码

let testReg = /jack/i;

let testStr = "Hello jack";

let n = testStr.search(testReg);
console.log(n);
//n = 6

两个函数,一个search(),一个是replace(),replace不会改变原字符串,需要一个新的变量接收结果。

 

RegExp对象

test()用于匹配,返回true,false

let reg = /lyw/;
reg.test("this is a test function");
//false

exec()用于检测,如果匹配返回数组,如果没有匹配,返回NULL

常用表达式收集

校验数字的表达式
数字^[0-9]*$
n位的数字^\d{n}$
至少n位的数字^\d{n,}$
m-n位的数字^\d{m,n}$
零和非零开头的数字^(0|[1-9][0-9]*)$
非零开头的最多带两位小数的数字^([1-9][0-9]*)+(.[0-9]{1,2})?$
1-2位小数的正数或负数^(\-)?\d+(\.\d{1,2})?$
正数、负数、和小数^(\-|\+)?\d+(\.\d+)?$
有两位小数的正实数^[0-9]+(.[0-9]{2})?$
1~3位小数的正实数^[0-9]+(.[0-9]{1,3})?$
非零的负整数^\-[1-9][]0-9″*$ 或 ^-[1-9]\d*$
非负整数^\d+$ 或 ^[1-9]\d*|0$
非正整数^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
非负浮点数^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
非正浮点数

^((-\d+(\.\d+)?)|(0+(\.0+)?))$

^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

正浮点数

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$

^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

负浮点数

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$

^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

浮点数^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
校验字符的表达式
汉字^[\u4e00-\u9fa5]{0,}$
英文和数字^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
长度为3-20的所有字符^.{3,20}$
26个英文字母组成的字符串^[A-Za-z]+$
26个大写英文字母组成的字符串^[A-Z]+$
26个小写英文字母组成的字符串^[a-z]+$
由数字和26个英文字母组成的字符串^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串

^\w+$

^\w{3,20}$

中文、英文、数字包括下划线^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
可以输入含有^%&',;=?$\”等字符[^%&',;=?$\x22]+
禁止输入含有~的字符[^~\x22]+
特殊需求表达式
Email地址^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
InternetURL[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
电话号码(“XXX-XXXXXXX””XXXX-XXXXXXXX””XXX-XXXXXXX””XXX-XXXXXXXX””XXXXXXX””XXXXXXXX)^($$\d{3,4}-)|\d{3.4}-)?\d{7,8}$
国内电话号码(0511-4405222021-87888822)\d{3}-\d{8}|\d{4}-\d{7}
身份证号(15位、18位数字)^\d{15}|\d{18}$
短身份证号码(数字、字母x结尾)^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线)^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线)^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间)^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式^\d{4}-\d{1,2}-\d{1,2}
一年的12个月(0109112)^(0?[1-9]|1[0-2])$
一个月的31(0109131)^((0?[1-9])|((1|2)[0-9])|30|31)$
xml文件^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
中文字符的正则表达式[\u4e00-\u9fa5]
双字节字符[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
空白行的正则表达式\n\s*\r (可以用来删除空白行)
HTML标记的正则表达式<(\S*?)[^>]*>.*?</\1>|<.*? /> 
首尾空白字符的正则表达式^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
腾讯QQ[1-9][0-9]{4,} (腾讯QQ号从10000开始)
中国邮政编码[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
IP地址\d+\.\d+\.\d+\.\d+ (提取IP地址时有用)
IP地址((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)) 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript 中的正则表达式是一种特殊的字符串,用于匹配搜索或替换文本中的模式。它们可以使用字符串的 match() 和 replace() 方法,以及 RegExp 对象的 exec() 和 test() 方法来执行。正则表达式通常使用两个斜杠 (//) 来定义,其中包含要匹配的模式。 ### 回答2: 正则表达式是一种用来描述匹配某个文本模式的字符串的表达式语言。在JavaScript中,正则表达式也是一个对象。使用正则表达式可以完成字符串的匹配、查找、替换等操作。 正则表达式的基本语法包括两个部分:字符集和限定符。字符集用来描述匹配的字符范围,限定符则表示字符集中字符的数量和位置。 字符集可以包括以下几种元素: 1. 普通字符串:匹配与该字符串完全相等的文本。 2. 元字符:用来描述某个特定的字符类型,如\d表示数字字符,\w表示字母或数字字符,\s表示空白字符等。 3. 字符集合:用来描述一组特定的字符,如[abc]表示匹配a、b或c中的任意一个字符。 4. 范围:用来描述一个字符的范围,如[a-z]表示匹配任意一个小写字母。 5. 量词:用来描述某个字符或字符集合出现的次数,如+表示至少出现一次,*表示任意次,?表示最多一次。 6. 分组:用()将一些字符组合在一起,方便后面的限定符对其进行操作。 正则表达式的应用非常广泛,如验证输入的表单是否符合要求、从一段文本中提取特定的信息等。同时也需要注意正则表达式的性能问题,过于复杂的正则表达式可能会导致程序运行缓慢甚至崩溃。因此,在编写正则表达式时,需要尽量简单明了,以便提高程序的性能。 总之,对于JavaScript程序员来说,熟练掌握正则表达式是非常重要的一项基本技能。在实际应用中,不断练习和实践才能更好地掌握和运用它。 ### 回答3: 正则表达式是一种强大的文本处理工具,它可以用于匹配、查找和替换文本中的模式。在JavaScript中,正则表达式是以RegExp对象的形式表示的。 RegExp对象可以通过字面量或构造函数的形式创建。例如,使用字面量创建一个正则表达式对象: ``` var regex = /pattern/; ``` 其中,pattern是要匹配的模式。正则表达式的模式可以包含字面字符、元字符、字符类和分组等元素。 另一种创建RegExp对象的方式是使用构造函数: ``` var regex = new RegExp('pattern'); ``` 在创建RegExp对象时,可以指定标志参数来修改匹配行为。常用的标志参数有: - g:全局匹配,即匹配所有符合模式的字符而不仅仅是第一个匹配项。 - i:不区分大小写匹配。 - m:多行匹配,即启用^和$两个元字符匹配每一行的开头和结尾。 例如,创建一个不区分大小写全局匹配的正则表达式对象: ``` var regex = /pattern/gi; ``` 通过正则表达式对象的test()方法可以判断一个字符串是否符合模式。例如: ``` var string = 'hello world'; var regex = /hello/; console.log(regex.test(string)); // true ``` 对于包含多个匹配项的情况,可以使用exec()方法返回匹配的结果数组。例如: ``` var string = 'hello world'; var regex = /l/g; var match; while ((match = regex.exec(string)) !== null) { console.log(match[0], match.index); } // Output: l 2 // l 3 // l 9 ``` 正则表达式还可以用于替换文本。通过字符串的replace()方法,可以使用正则表达式匹配并替换字符串中的内容。例如: ``` var string = 'hello world'; var regex = /world/; console.log(string.replace(regex, 'kitty')); // hello kitty ``` 需要注意的是,正则表达式在处理特殊字符时可能会出现转义问题。因此,需要在正则表达式中对特殊字符进行转义。例如: ``` var string = 'hello.world'; var regex = /hello\.world/; console.log(regex.test(string)); // true ``` 总之,正则表达式JavaScript中一个非常重要的概念,对于文本处理和数据分析等方面都有着广泛的应用。掌握正则表达式的基本语法和应用,对于JavaScript开发者来说是一项必备技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值