自学内容网 自学内容网

javascript-web APLs (六)

正则表达式

介绍

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象
通常用来查找、替换那些符合正则表达式的文本
在 JavaScript中的使用场景:
例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文( 匹配 )
过滤掉页面内容中的一些敏感词( 替换 ),或从字符串中获取我们想要的特定部分( 提取 )等

语法

1. 定义正则表达式语法:
const 变量名 = /表达式/

其中 /  /  是正则表达式字面量

比如:

const reg = /前端/
2 .判断 是否有符合规则的字符串:
test() 方法 用来查看正则表达式与指定的字符串是否匹配
regObj.test(被检测的字符串)
//如果正则表达式与指定的字符串匹配 ,返回true,否则false
//要检测的字符串
const str = 'IT培训,前端开发培训,IT培训课程,web前端培训,Java培训,人工智能培训'
//1.定义正则表达式,检测规则
const reg = /前端/
//2.检测方法
console.log(reg.test(str))  //true
3.检索( 查找 )符合规则的字符串:
exec() 方法 在一个指定字符串中执行一个搜索匹配
regObj.exec(被检测字符串)
//如果匹配成功,exec() 方法返回一个数组,否则返回null
//要检测的字符串
const str = 'IT培训,前端开发培训,IT培训课程,web前端培训,Java培训,人工智能培训'
//1.定义正则表达式,检测规则
const reg = /前端/
//2.检测方法
console.log(reg.exec(str))  //返回的是数组

元字符

普通字符:
大多数的字符仅能够描述它们本身,这些字符称作普通字符,例如所有的字母和数字
也就是说普通字符只能够匹配字符串中与它们相同的字符
元字符(特殊字符)
是一些具有 特殊含义 的字符,可以极大提高了灵活性和强大的匹配功能
比如,规定用户只能输入英文26个英文字母,普通字符的话 abcdefghijklm…..
但是换成元字符写法: [a-z]
参考文档:
   MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
   正则测试工具: http://tool.oschina.net/regex

边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

如果 ^ 和 $ 在一起,表示必须是精确匹配
console.log(/二哈/.test('很二哈哈'))  //true 只要包含 都是对的



//边界符  自变量.test()中test表判断
//^ 表示以谁开头
console.log(/^哈/.test('哈二'))   //true  以哈开头
console.log(/^哈/.test('二哈'))   //false  

console.log(/^哈$/.test('哈')) //true 只有这种情况为true,否则都为false
console.log(/^哈$/.test('哈哈'))  //false

量词 (表示重复次数)

量词用来 设定某个模式出现的次数

量词 * 类似于 大于等于0

console.log(/^哈*$/.test(''))  //true
console.log(/^哈*$/.test('哈哈哈'))  //true
console.log(/^哈*$/.test('哈二哈'))  //false 允许只有哈出现,哈出现次数>=0,其他的都不行

量词 + 类似于 大于等于1

console.log(/^哈+$/.test(''))  //false 要求哈的次数>=1
console.log(/^哈+$/.test('哈哈哈'))  //true
console.log(/^哈+$/.test('哈二哈'))  //false

量词 ? 类似于 0 或 1

console.log(/^哈?$/.test(''))  //true
console.log(/^哈?$/.test('哈'))  //true
console.log(/^哈?$/.test('哈哈'))  //false
console.log(/^哈?$/.test('哈二哈'))  //false

量词{n}写几,就必须出现几次

console.log(/^哈{3}$/.test('哈'))  //false
console.log(/^哈{3}$/.test('哈哈哈'))  //true

量词{n,}表示大于等于n

console.log(/^哈{3,}$/.test('哈哈'))  //false
console.log(/^哈{3,}$/.test('哈哈哈'))  //true
console.log(/^哈{3,}$/.test('哈哈哈哈'))  //true

量词{n,m} 表示 >=n && <=m  注意:逗号左右两侧千万不能有空格

console.log(/^哈{3,4}$/.test('哈哈哈'))  //true
console.log(/^哈{3,4}$/.test('哈哈哈哈'))  //true
console.log(/^哈{3,4}$/.test('哈哈哈哈哈'))  //false

字符类 (比如 \d 表示 0~9)

(1) [ ] 匹配字符集合
  后面的字符串只要包含 abc 中任意 一个字符 ,都返回 true
//只要中括号里面的任意字符出现都返回为 true
console.log(/[abc]/.test('a'))  //true
console.log(/[abc]/.test('ab'))  //true
console.log(/[abc]/.test('def'))  //false
//当有精确匹配时 [abc] 只能含有一个 ,不能大于1
console.log(/[^abc$]/.test('a'))  //true
console.log(/[^abc$]/.test('ab'))  //false  如果想让其变成 true
//则
console.log(/[^acb{2}$]/.test('ab'))  //true  细品
(2) [ ] 里面加上 - 连字符
  使用连字符 - 表示一个范围 
//字符类 [a-z]  只选一个
console.log(/^[a-z]$/.test('p'))   //true

console.log(/^[a-zA-Z0-9]$/.test('p'))  //true   里面只要是在范围内就是true,但只能有一个

 [a-z] 表示 a 到 z 26个英文字母都可以

  [a-zA-Z] 表示大小写都可以
  [0-9] 表示 0~9 的数字都可以
//扩展
腾讯QQ号: ^[1-9][0-9]{4,}$ (腾讯QQ号从10000开始)
(3) [ ] 里面加上 ^ 取反符号
  比如:
   [^a-z] 匹配除了小写字母以外的字符
   注意要写到中括号里面

修饰符


原文地址:https://blog.csdn.net/2301_80115241/article/details/143891056

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!