js正则表达式,匹配括号中的内容(不包含括号)

我要冲啦个人网站建设2024-02-22web前端

特别强调:Safari浏览器不支持两种格式的正则表达式: 1.双斜杠://; 2.零度断言:?<= !?=;

可以使用使用构造函数代替 // 格式;

零度断言目前没有找到更好的办法,有办法的大佬可以评论下,谢谢!

 

案例1:JS 正则表达式 获取小括号 中括号 花括号内的内容(包含括号)

var str = "12【开始】3{xxxx}456[我的]789123[你的]456(1389090)78【结束】9";

var regex1 = /\((.+?)\)/g; // () 小括号

var regex2 = /\[(.+?)\]/g; // [] 中括号

var regex3 = /\{(.+?)\}/g; // {} 花括号,大括号

var regex4 = /\【(.+?)\】/g; // {} 中文大括号

 

// 输出是一个数组

console.log(str.match(regex1)); // ["(1389090)"]

console.log(str.match(regex2)); // ["[我的]", "[你的]"]

console.log(str.match(regex3)); // ["{xxxx}"]

console.log(str.match(regex4)); // ["【开始】", "【结束】"]

正则表达式匹配括号中的字符,不包括括号

(?<=\()\S+(?=\))

(?<=exp)是以exp开头的字符串, 但不包含本身.

(?=exp)就匹配为exp结尾的字符串, 但不包含本身.

(?<=() 也就是以括号开头, 但不包含括号.

(?=)) 就是以括号结尾

\S 匹配任何非空白字符。等价于[^\f\n\r\t\v]。

+表示至少有一个字符.

(?<=()\S+(?=)) 就是匹配以 (开头, )结尾的括号里面最少有一个非空白字符的串, 但不包括开头的(和结尾的)

 

案例2 以案例1为基础,不包含括号

var str = "12【开始】3{xxxx}456[我的]789123[你的]456(1389090)78【结束】9";

var regex1 = /(?<=\()(.+?)(?=\))/g; // () 小括号

var regex2 = /(?<=\[)(.+?)(?=\])/g; // [] 中括号

var regex3 = /(?<=\{)(.+?)(?=\})/g; // {} 花括号,大括号

var regex4 = /((?<=\【)(.+?)(?=\】))/g; // {} 中文大括号

 

// 输出是一个数组

console.log(str.match(regex1)); // ["1389090"]

console.log(str.match(regex2)); // ["我的", "你的"]

console.log(str.match(regex3)); // ["xxxx"]

console.log(str.match(regex4)); // ["开始", "结束"]

文章关键词