JavaScript正则表达式基础

这篇具有很好参考价值的文章主要介绍了JavaScript正则表达式基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建正则表达式,一般有两种写法

//定义式创建正则,写法:两个斜杠中间放正则式子
const reg = /abc/;
//new关键字创建正则,写法:两个斜杠中间放正则式子或直接去掉斜杠放字符串式表达式
const regExp = new RegExp('abc')

.test('需要验证的字符'),正则的方法用来验证正则的匹配结果true or false

修饰符

写法:/正则/ 修饰符

示例:/abc/i (匹配字符串abc并且不区分大小)

i:执行对大小写不敏感的匹配(不区分字母的大小写)

g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)

m:执行多行匹配

其他:修饰符还有其他的一般用的少,常用的基本就上面三个

正则分类

预定义类

// .的意思是除了换行和回车之外的任意字符
//如果检测的字符串里面包含 除了换行和回车之外的任意字符 那就返回true,否则返回false.
console.log(/./.test("\r"))// false   \r代表return,return表示回到一行的开头
console.log(/./.test("\n"))//false    \n代表newline,新的一行
console.log(/./.test("\r\n"))//false   \r\n表示换行并将光标定位到一行的开头
console.log(/./.test(""))//false
console.log(/./.test("12klk"))//true	

// \d表示数字,d是英文digit的意思
console.log(/\d/.test("kjdksj"));//false
console.log(/\d/.test("kj7ksj"));//true	

// \D表示非数字的意思
console.log(/\D/.test("kjdksj"));//true
console.log(/\D/.test("k2"));//true
console.log(/\D/.test("12345"));//false	

// \s表示表示不可见字符
console.log(/\s/.test("\t"));//true  \t 表示制表符
console.log(/\s/.test("\f"));//true  \t 表示换页符
console.log(/\s/.test("\v"));//true	 \v 表示垂直制表符
console.log(/\s/.test("\n"));//true	 \n 换行符
console.log(/\s/.test("\r"));//true	 \r 回车符
console.log(/\s/.test(" "));//true	
console.log(/\s/.test("jhsjhsdh"));//false	

// \S表示表示可见字符 跟小s相反
console.log(/\S/.test("\t"));//false  
console.log(/\S/.test("jinitaimei"));//true  
 
 // \w表示单词字符(所有单词和数字以及下划线_)
 console.log(/\w/.test("rerer3434"));//true  
 console.log(/\w/.test("3434"));//true  
 console.log(/\w/.test("wewewe"));//true  
 console.log(/\w/.test("___	"));//true  
 console.log(/\w/.test("@##$$"));//false  
 
 // \W表示非单词字符(所有非单词和数字以及下划线_)
 console.log(/\W/.test("rerer3434"));//false  
 console.log(/\W/.test("3434"));//false  
 console.log(/\W/.test("wewewe"));//false  
 console.log(/\W/.test("___wewe"));//false  
 console.log(/\W/.test("@##$$"));//true  

自定义类

  console.log(/鸡/.test("鸡霓太美"));//true
  console.log(/鸡/.test("基尼太美"));//false

或跟优先级

	// a|b 表示或,此处表示字母a或者b
	console.log(/a|b/.test("asasas"));//true
	console.log(/a|b/.test("sbbbbbbbb"));//true
	console.log(/a|b/.test("dfdfdfdf"));//false
	
	// q(a|b)q 表示优先计算(a|b),跟普通的数学运算一样
	console.log(/q(a|b)q/.test("qaq"));//true
	console.log(/q(a|b)q/.test("qbq"));//true
	console.log(/q(a|b)q/.test("qaa"));//false
	console.log(/q(a|b)q/.test("qqqq"));//false

简单类

	// [abc]表示abc中的任意一个
	console.log(/[abc]/.test("qaq"));//true
	console.log(/[abc]/.test("bbbc"));//true
	console.log(/[abc]/.test("cc1213"));//true
	console.log(/[abc]/.test("dddfff"));//false
	console.log(/a[abc]a/.test("aaa"));//true
	console.log(/a[abc]a/.test("aca"));//true
	console.log(/a[abc]a/.test("aa"));//false

 范围类

	// [a-z]表示范围类a到字母z,[0-9]表示范围类0到数字9
	console.log(/[a-z]/.test("qaq"));//true
	console.log(/[a-z]/.test("cc"));//true
	console.log(/[a-z]/.test("2323"));//false
	console.log(/[0-9]/.test("2"));//true
	console.log(/[0-9]/.test("20"));//true
	console.log(/[0-9]/.test("wewe"));//false

负向类

	// [^aa]表示除aa字符以外的任意字符
		console.log(/[^aa]/.test("aa"));//false
		console.log(/[^aa]/.test("vvvvvvvvaa"));//true
		console.log(/[^aa]/.test("wewewe"));//true
		console.log(/[^aa]/.test("12wewea"));//true

组合类

// [^a-d][^1-4],[^a-d]表示字母a-d之外,[^1-4]表示数字1-4之外,两个中括号表示至少要两个字符
console.log(/[^a-d][^1-4]/.test("aa"));//false
console.log(/[^a-d][^1-4]/.test("a5"));//false
console.log(/[^a-d][^1-4]/.test("d"));//false 数量及条件都不满足
console.log(/[^a-d][^1-4]/.test("f"));//false 数量不满足
console.log(/[^a-d][^1-4]/.test("f5"));//true
console.log(/[^a-d]|[^1-4]/.test("f"));//true  中间加了一个条件|(或)
console.log(/[^a-d](11|22)/.test("a11"));//false   
console.log(/[^a-d](11|22)/.test("e12"));//false  
console.log(/[^a-d](11|22)/.test("e11"));//true  

边界与严格匹配 

//  /^a/ ^a表示以a开头的字符, /c$/c$表示以c结尾的字符
console.log(/^a/.test("abc"));//true 
console.log(/^a/.test("Aabc"));//false 
console.log(/c$/.test("abc"));//true 
console.log(/c$/.test("abccc"));//true 

//  /^$/表示严格匹配^$两个符号中间的正则,且只能出现一次
console.log(/^ac$/.test("ac"));//true
 // 当^跟$同时出现的时候即为严格匹配两个符号中间的正则而不仅仅是开头跟结尾了 
console.log(/^ac$/.test("abc"));//false 此处正则为严格匹配自定义类ac字符,而非以a开头c结尾
console.log(/^ac$/.test("acac"));//false 严格模式只能出现一次,多次则为false
console.log(/^ac$/.test("acs"));//false 

 量词

// 量词:
// 1.*表示出现零次或者多次 result>=0
// 2.+表示出现一次或者多次 result>=1
// 3.?表示出现零次或一次 result=(0||1)
// 4.{n}表示只能出现n次,n是任意大于等于0的数字
// 5.{n,}表示大于等于n的次数,n是任意大于等于0的数字
// 6.{n,m}表示大于n小于m的次数,n跟m是任意大于等于0的数字
// 此处的多次表示量词前面的正则字符匹配结果
console.log(/^abc*$/.test("abc"));//true  ab符合,c出现了一次,符合严格模式,所以为true
console.log(/^abc*$/.test("ab"));//true  ab符合,c出现了零次,符合严格模式,所以为true
console.log(/^abc*$/.test("ac"));//false a开头符合了,c出现了一次符合了,但是没有b,所以false
console.log(/abc*/.test("ac"));//false a有了,c出现了一次符合了,但是没有b,所以false
console.log(/^abc*$/.test("abcccc"));//true ab都有了且c出现了多次,符合严格模式,所以false
console.log(/^abc*$/.test("abbcccc"));//false ab都有了但没有abc连续,所以false
console.log(/^abc*$/.test("abcabc"));//false  ab符合,c也出现了一次,但不符合严格模式,所以为false

console.log(/^abc+$/.test("abc"));//true  ab符合,c出现了一次,符合严格模式,所以为true
console.log(/^abc+$/.test("ab"));//false  ab符合,c出现了零次,所以为false
console.log(/^abc+$/.test("abccc"));//true  ab符合,c出现了多次,所以为true
console.log(/^abc+$/.test("abdccc"));//false  ab符合,但是没有连续的abc,所以为false
console.log(/^abc+$/.test("abcabc"));//false  不符合严格模式

console.log(/^abc?$/.test("abc"));//true  ab符合,c出现了一次,符合严格模式,所以为true
console.log(/^abc?$/.test("ab"));//true  ab符合,c出现了零次,符合严格模式,所以为true
console.log(/^abc?$/.test("abcc"));//false  ab符合,c出现了多次,所以为false


console.log(/^abc{2}$/.test("abcc"));//true  ab符合,c出现了2次,所以为true
console.log(/^abc{2}$/.test("abc"));//false  c只出现了1次,所以为false
console.log(/^abc{2}$/.test("abccc"));//false  c只出现了3次,所以为false

console.log(/^abc{2,}$/.test("abccc"));//true  c出现了大于2的次数,所以为true
console.log(/^abc{2,}$/.test("abcc"));//true  c出现了等于2的次数,所以为true
console.log(/^abc{2,}$/.test("abc"));//false  c出现了小于2的次数,所以为false

console.log(/^abc{2,4}$/.test("abccc"));//true  c出现了3次在2跟4之间,所以为true
console.log(/^abc{2,4}$/.test("abcc"));//true  c出现了2次在2跟4之间,所以为true
console.log(/^abc{2,4}$/.test("abc"));//false  c出现了小于2的次数,所以为false
console.log(/^(abc){2,4}$/.test("abc"));//false  abc出现了小于2的次数,所以为false
console.log(/^(abc){2,4}$/.test("abcabc"));//true  abc出现了2次在2跟4之间,所以为true

常用正则 

let str = '鸡你太美'
console.log(escape(str));//'%u9E21%u4F60%u592A%u7F8E',使用escape方法可以将汉字转成Unicode编码
console.log(unescape('%u9E21%u4F60%u592A%u7F8E'))//'鸡你太美',使用unescape方法可以将Unicode编码反向编译
验证汉字:/^[\u4e00-\u9fa5]+$/
验证邮箱:/^\w+([-+.]\w+)*@\w+([-.]\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}$/
电话号码(座机号码):/^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$/
身份证号码(18位数):/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/

正则常用方法

test

用于检测正则的匹配结果,正则身上的方法可直接正则点方法的形式使用,返回一个布尔值,符合正则条件则为true,否则为false,

replace

常用替换正则匹配到的字符

let string = '马老师34878745@qq.com,鸡哥77777@163.com,vandark 100000@aliyun.com'
// replace(翻译有替换的意思)
// 第一个参数为正则表达式,
// 第二个参数为需要替换的字符
// /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/邮箱正则表达式
// /^$/ 表示严格匹配,只能匹配一次符合条件的,如出现多次结果是匹配失败
let emailRegexp = /\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}/g //g表示字符串中的所有的,全局的
let result = string.replace(emailRegexp,'邮箱');//将匹配的邮箱换成汉字邮箱,
console.log(string,'------',result);

match

可将正则匹配的条件以数组的形式返回

// match(翻译有相配或者相似的意思)
let string = '马老师34878745@qq.com,鸡哥77777@163.com,vandark 100000@aliyun.com'
let emailRegexp = /\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}/g  //匹配字符串中所有的邮箱,g开启全局模式
let result2 = string.match(emailRegexp);//
console.log(result2)
// 打印结果:['34878745@qq.com', '77777@163.com', '100000@aliyun.com']
//返回结果是一个数组,没有找到则返回一个null


// match分组提取
let emailRegexpGroup = /(\w{3,}(\.\w+)*)@([A-z0-9]+)(\.([A-z]{2,5}){1,2})/
//将相应的正则用括号括起来可以分段提取
'77777@163.com'.match(emailRegexpGroup);//分组示例
console.log(RegExp.$1)//(\w{3,}(\.\w+)*)表示邮箱的前缀---77777
console.log(RegExp.$2)//这个为啥是空的我也不知道
console.log(RegExp.$3)//([A-z0-9]+)表示邮箱@符号后面的邮箱类型---163
console.log(RegExp.$4)//(\.([A-z]{2,5}){1,2})表示的后缀符号---.com


// 练习
let strValue = 'a=1,b=2,c=3';
console.log(strValue.replace(/\w=\d/g,'结果'));//第二个参数为普通字符
// 打印结果:结果,结果,结果
console.log(strValue.replace(/(\w)=(\d)/g,'$2=$1'));
//将等于号前后的正则匹配条件括起来,参数二换成$n,则可以翻转等于号前后字符
//此处$1表示第一个括号匹配到的条件,此处$2表示第二个括号匹配到的条件,以此类推
// 打印结果:1=a,2=b,3=c

search

用于查找正则条件在字符中出现的位置

// search(翻译有搜索的意思)
let string = '马老师34878745@qq.com,鸡哥77777@163.com,vandark 100000@aliyun.com'
let result3 = string.search( /\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}/);//匹配字符串中所有的基字,g表示替换所有的,全局的
console.log(result3)//返回结果是一个正则匹配结果在字符串中出现的索引
// 打印结果是3,邮箱在字符第一次出现的索引即是3

split

用于将正则条件匹配到的结果为分割将字符变成数组

// split(翻译有分割的意思)
let string = '马老师34878745@qq.com,鸡哥77777@163.com,vandark 100000@aliyun.com'
let result4 = string.split(/[\d\w]+\b@[a-zA-ZA-z0-9]+\.[a-z]+/);//此处正则为邮箱正则
console.log(result4)//返回结果是一个数组:['马老师', ',鸡哥', ',vandark ', '']
// 练习
let maStr = '闪-电-五-连-鞭-'
console.log(maStr.split(/-/))//打印结果:['闪', '电', '五', '连', '鞭', '']
//此处需要注意如果最后一个字符也符合正则匹配条件则数组最后一个为空

exec

有点像查找,但又不像,区别在于exec分次数查找,与test一样是正则身上的方法

// exec()
let string = '马老师34878745@qq.com,鸡哥77777@163.com,vandark 100000@aliyun.com'
let emailRegexp = /[\d\w]+\b@[a-zA-ZA-z0-9]+\.[a-z]+/g
console.log(emailRegexp.exec(string))//返回结果是一个数组,
console.log(emailRegexp.exec(string))//每执行一次则从上一次执行结果的后面继续匹配查找
console.log(emailRegexp.exec(string))//
console.log(emailRegexp.exec(string))//如没有符合的条件时则返回null
// 结果第一个值为匹配到的条件,
// 结果第二个值为我也不知道,
// 结果第三个值为匹配到的条件出现的索引,
// 结果第四个值为传进去的字符串,
// 结果第五个值为,

// 可配合while循环使用
let res
while(res = emailRegexp.exec(string)){
	console.log(res[0])
}

JavaScript正则表达式基础,javascript,正则表达式,开发语言文章来源地址https://www.toymoban.com/news/detail-706227.html

到了这里,关于JavaScript正则表达式基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript使用正则表达式

    正则表达式(RegExp)也称规则表达式(regular expression),是非常强大的字符串操作工具,语法格式为一组特殊字符构成的匹配模式,用来匹配字符串。ECMAScript 3以Perl为基础规范JavaScript正则表达式,实现Perl 5正则表达式的子集。JavaScript通过内置RegExp类型支持正则表达式,String和Re

    2024年02月05日
    浏览(47)
  • JavaScript中的正则表达式

    正则表达式是一种强大的工具,可以在多种编程语言中使用,包括JavaScript。它们允许您在文本中查找和匹配模式,以及执行各种操作,如替换、拆分和验证。在JavaScript中,正则表达式通常用来检查字符串是否符合某种特定模式,并且可以用来从字符串中提取特定的子字符串

    2024年02月02日
    浏览(29)
  • 15个常用的javaScript正则表达式

    c 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 onsole.log(uPattern.test(“iFat3”)); 2密码强度正则 //密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 var pPattern=/

    2024年01月17日
    浏览(47)
  • 防止 JavaScript 中的正则表达式回溯

    正则表达式是用于在软件应用程序中操作和验证文本的强大工具。然而,某些正则表达式模式可能容易受到回溯的影响,这可能会导致超线性运行时,并可能导致DoS攻击。在本文中,我们将探讨什么是回溯、它如何导致性能问题以及如何在正则表达式中防止回溯。 回溯是正则

    2024年02月12日
    浏览(36)
  • 前端JavaScript入门-day08-正则表达式

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 介绍 语法  元字符  边界符  量词  字符类: 修饰符 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象,通常用

    2024年02月13日
    浏览(46)
  • JavaScript Web APIs - 06 正则表达式

    目标:能够利用正则表达式完成小兔鲜注册页面的表单验证,具备常见的表单验证能力 正则表达式 综合案例 阶段案例 正则表达式 (

    2024年02月10日
    浏览(39)
  • 【JavaScript_2】语法、标准库、正则表达式

    1、强制转换 使用Number函数,可以将任意类型的值转化成数值。 Number函数将字符串转为数值,要比parseInt函数严格很多。基本上,只要有一个字符无法转成数值,整个字符串就会被转为NaN。 上面代码中,parseInt逐个解析字符,而Number函数整体转换字符串的类型。 另外,parseI

    2024年02月13日
    浏览(42)
  • 【Java 进阶篇】JavaScript 正则表达式(RegExp)详解

    JavaScript 正则表达式,通常简写为 RegExp,是一种强大的文本匹配工具,它允许你通过一种灵活的语法来查找和替换字符串中的文本。正则表达式在编程中用途广泛,不仅限于 JavaScript,在许多编程语言中也都有类似的实现。 正则表达式,简称正则或RegExp,是一个用于描述字符

    2024年02月07日
    浏览(37)
  • 身份证号码的正则表达式及验证详解(JavaScript,Regex)

    简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案 身份证号码说明 居民身份证号码,正确、正式的称谓应该是“公民身份号码”。根据【中华人民共和国国家标准 GB 11

    2023年04月20日
    浏览(27)
  • Javascript正则表达式常用的验证(验证手机号,电话,邮箱,网址等)

    验证手机号码是否合法 验证规则:11位数字,以1开头。 第二位不能是二,不能是0[3456789] 例一: 预览效果  例二: 前面添加 ! 的意义是给这个函数  取反 预览效果 验证电话号码  验证规则:区号+号码,区号以0开头,3位或4位 号码由7位或8位数字组成 区号与号码之间可以

    2023年04月22日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包