如何巧妙运用正则表达式解决JavaScript中的复杂字符串匹配问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1027个文字,预计阅读时间需要5分钟。
%E6%A8%A1%E5%BC%8F%E4%BF%AE%E9%A5%B0%E7%AC%A6%E7%9A%84%E5%8F%AF%E9%80%89%E5%8F%82%E6%95%B0: i%3A%E5%BF%BD%E7%95%A5%E5%A4%A7%E5%B0%8F%E5%86%99, g%3A%E5%85%A8%E5%B1%80%E5%8C%B9%E9%85%8D, m%3A%E5%A4%9A%E8%A1%8C%E5%8C%B9%E9%85%8D
%2Fhello%2F%3A%E4%B8%A4%E4%B8%AA%E5%8F%8D%E6%96%9C%E6%9D%A0%E6%98%AF%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%AD%97%E9%9D%A2%E9%87%8F%E8%A1%A8%E7%A4%BA%E6%B3%95
%E4%B8%A4%E4%B8%AA%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95: test, const test=new RegExp('hello world', 'ig'); console.log(test.test('he'));
模式修饰符的可选参数
- i: 忽略大小写
- g: 全局匹配
- m: 多行匹配
- /hello/: 两个反斜杠是正则表达式的字面量表示法
两个测试方法
test
const test = new RegExp('hello world', 'ig'); console.log(test.test('hello world')); // true
exec
返回的是数组,有就返回数组的值,没有返回为null
const test = new RegExp('hello world', 'ig'); console.log(test.exec('hello')); // null
四个正则表达式方法
match(pattern)
将所有匹配的字符串组合成数组返回
const pattern=/Box/ig; const str="This is a Box! The is a box!"; console.log(str.match(pattern));
search(pattern)
返回字符串中pattern开始位置,忽略全局匹配
const pattern=/Box/i; // const str="This is a Box! The is a box!"; console.log(str.search(pattern)); // 10
replace(pattern)
替换匹配到的字符串
const pattern=/Box/ig; const str="This is a Box! The is a box!"; console.log(str.replace(pattern,'Tom'));
split(pattern)
返回字符串指定pattern拆分数组
const pattern = / /ig; //空格 const str = "This is a Box! The is a box!"; console.log(str.split(pattern)); //以空格进行分割,返回的是数组 // 输出结果 // [ 'This', 'is', 'a', 'Box!', 'The', 'is', 'a', 'box!' ]
匹配模式
\w表示a-zA-Z_
锚元字符匹配(^ $) ^强制收匹配 $强制尾匹配,并且只匹配一个
const pattern=/^[a-z]oogle\d$/; const str="aoogle2"; console.log(pattern.test(str)); // true
注意: ^符号在[]里面表示 非 在外边表示强制首匹配,并且只匹配一个 要想匹配多个值,使用+
\b表示到达边界
|表示匹配或选择模式
const pattern=/baidu|google|bing/; //匹配或选择其中某个字符,不是相等,包含的意思 const str = "baidu a google"; console.log(pattern.test(str)); //返回true
常用正则表达式
检查邮政编码
const pattern = /^[1-9]{1}[0-9]{5}$/; const str = "122534"; //共6位数,第一位不能为0 console.log(pattern.test(str)); // true
压缩包后缀名
\w等于a-zA-Z0-9_ 使用^限定从首字母匹配 .是特殊符号需要\n进行转义
|选择符必须使用()进行分组
const pattern = /^[\w]+\.(zip|gz|rar)$/; const str="a12_.zip"; //文件名 字母_数字.zip,gz,rar console.log(pattern.test(str)); // true
删除多余空格
方法一: 使用replace只匹配一个,所以使用+匹配多个
var pattern=/^\s+/; var str=" google "; var result=str.replace(pattern,''); pattern=/\s+$/; result=result.replace(pattern,'');
方法二: (.+)贪婪模式,使用惰性模式,后面的空格不让匹配
var pattern=/^\s+(.+?)\s+$/; var str=" google "; var result=pattern.exec(str,'')[1]; console.log('|'+result+'|');
方法三: (.+)贪婪模式,改为惰性模式,使用分组模式,只取匹配的内容
var pattern=/^\s+(.+?)\s+$/; var str=" google "; var result=str.replace(pattern,'$1'); //使用分组模式 console.log('|'+result+'|'); // |google|
简单邮箱验证
var pattern=/^([\w\.\_]+)@([\w\_]+)\.([a-zA-Z]){2,4}$/; var str="qzfweb@gmail.com"; console.log(pattern.test(str)); // true
以上所述是小编给大家介绍的Javascript常用正则表达式应用讲解详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对自由互联网站的支持!
本文共计1027个文字,预计阅读时间需要5分钟。
%E6%A8%A1%E5%BC%8F%E4%BF%AE%E9%A5%B0%E7%AC%A6%E7%9A%84%E5%8F%AF%E9%80%89%E5%8F%82%E6%95%B0: i%3A%E5%BF%BD%E7%95%A5%E5%A4%A7%E5%B0%8F%E5%86%99, g%3A%E5%85%A8%E5%B1%80%E5%8C%B9%E9%85%8D, m%3A%E5%A4%9A%E8%A1%8C%E5%8C%B9%E9%85%8D
%2Fhello%2F%3A%E4%B8%A4%E4%B8%AA%E5%8F%8D%E6%96%9C%E6%9D%A0%E6%98%AF%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%AD%97%E9%9D%A2%E9%87%8F%E8%A1%A8%E7%A4%BA%E6%B3%95
%E4%B8%A4%E4%B8%AA%E6%B5%8B%E8%AF%95%E6%96%B9%E6%B3%95: test, const test=new RegExp('hello world', 'ig'); console.log(test.test('he'));
模式修饰符的可选参数
- i: 忽略大小写
- g: 全局匹配
- m: 多行匹配
- /hello/: 两个反斜杠是正则表达式的字面量表示法
两个测试方法
test
const test = new RegExp('hello world', 'ig'); console.log(test.test('hello world')); // true
exec
返回的是数组,有就返回数组的值,没有返回为null
const test = new RegExp('hello world', 'ig'); console.log(test.exec('hello')); // null
四个正则表达式方法
match(pattern)
将所有匹配的字符串组合成数组返回
const pattern=/Box/ig; const str="This is a Box! The is a box!"; console.log(str.match(pattern));
search(pattern)
返回字符串中pattern开始位置,忽略全局匹配
const pattern=/Box/i; // const str="This is a Box! The is a box!"; console.log(str.search(pattern)); // 10
replace(pattern)
替换匹配到的字符串
const pattern=/Box/ig; const str="This is a Box! The is a box!"; console.log(str.replace(pattern,'Tom'));
split(pattern)
返回字符串指定pattern拆分数组
const pattern = / /ig; //空格 const str = "This is a Box! The is a box!"; console.log(str.split(pattern)); //以空格进行分割,返回的是数组 // 输出结果 // [ 'This', 'is', 'a', 'Box!', 'The', 'is', 'a', 'box!' ]
匹配模式
\w表示a-zA-Z_
锚元字符匹配(^ $) ^强制收匹配 $强制尾匹配,并且只匹配一个
const pattern=/^[a-z]oogle\d$/; const str="aoogle2"; console.log(pattern.test(str)); // true
注意: ^符号在[]里面表示 非 在外边表示强制首匹配,并且只匹配一个 要想匹配多个值,使用+
\b表示到达边界
|表示匹配或选择模式
const pattern=/baidu|google|bing/; //匹配或选择其中某个字符,不是相等,包含的意思 const str = "baidu a google"; console.log(pattern.test(str)); //返回true
常用正则表达式
检查邮政编码
const pattern = /^[1-9]{1}[0-9]{5}$/; const str = "122534"; //共6位数,第一位不能为0 console.log(pattern.test(str)); // true
压缩包后缀名
\w等于a-zA-Z0-9_ 使用^限定从首字母匹配 .是特殊符号需要\n进行转义
|选择符必须使用()进行分组
const pattern = /^[\w]+\.(zip|gz|rar)$/; const str="a12_.zip"; //文件名 字母_数字.zip,gz,rar console.log(pattern.test(str)); // true
删除多余空格
方法一: 使用replace只匹配一个,所以使用+匹配多个
var pattern=/^\s+/; var str=" google "; var result=str.replace(pattern,''); pattern=/\s+$/; result=result.replace(pattern,'');
方法二: (.+)贪婪模式,使用惰性模式,后面的空格不让匹配
var pattern=/^\s+(.+?)\s+$/; var str=" google "; var result=pattern.exec(str,'')[1]; console.log('|'+result+'|');
方法三: (.+)贪婪模式,改为惰性模式,使用分组模式,只取匹配的内容
var pattern=/^\s+(.+?)\s+$/; var str=" google "; var result=str.replace(pattern,'$1'); //使用分组模式 console.log('|'+result+'|'); // |google|
简单邮箱验证
var pattern=/^([\w\.\_]+)@([\w\_]+)\.([a-zA-Z]){2,4}$/; var str="qzfweb@gmail.com"; console.log(pattern.test(str)); // true
以上所述是小编给大家介绍的Javascript常用正则表达式应用讲解详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对自由互联网站的支持!

