JavaScript学习小结(7)之JS RegExp
简介
RegExp是JavaScript中的一个正则表达式对象,用于匹配字符串中的对应字符序列。使用正则表达式可以轻松地检索符合特定模式的字符串,同时也可以将文本内容替换为不同的字符。
创建RegExp对象
有两种创建RegExp对象的方法:字面量和构造函数。
字面量创建RegExp对象
使用字面量创建RegExp对象的方式是将正则表达式用斜杠包裹起来,如下所示:
let pattern = /pattern/flags;
其中pattern是正则表达式模式,flags是可选的标志。
构造函数创建RegExp对象
使用RegExp构造函数创建正则表达式对象,如下所示:
let pattern = new RegExp('pattern', 'flags');
其中,pattern是正则表达式模式,flags是可选的标志。
在字符串中匹配正则表达式
使用RegExp对象的test方法可以在字符串中查找对应的字符序列,并返回true或false。
考虑以下例子,匹配一个由数字组成的电话号码:
let phone = '123-456-7890';
let pattern = /\d{3}-\d{3}-\d{4}/;
console.log(pattern.test(phone)); // true
以上代码通过创建一个RegExp对象模式/\d{3}-\d{3}-\d{4}/
,匹配字符串123-456-7890
,返回值为true。
替换字符串中的字符
使用RegExp对象的replace方法可以轻松地替换字符串中的字符。
考虑以下例子,将下划线分隔符替换为短横线:
let str = 'hello_world';
let pattern = /_/g;
let newStr = str.replace(pattern, '-');
console.log(newStr); // 'hello-world'
以上代码通过创建一个RegExp对象替换字符串中的下划线,将其替换为短横线。
示例1
考虑一道LeetCode题目,给定一个字符串s,检查是否可以通过最多重复k次的方式从s中得到一个回文字符串。返回true或false。
使用正则表达式可以轻松地处理该问题。首先将字符串s颠倒顺序后与自身拼接,然后判断是否存在一个长度为len / 2的回文字符串,其中len是s的长度。
var canConstruct = function(s, k) {
const len = s.length;
if (k > len) return false;
if (k == len) return true;
const count = new Array(26).fill(0);
for (let i = 0; i < len; i++) {
let idx = s.charCodeAt(i) - 'a'.charCodeAt(0);
count[idx]++;
}
let oddCount = 0;
for (let i = 0; i < count.length; i++) {
if (count[i] & 1) {
oddCount++;
}
}
return oddCount <= k && k <= len;
};
以上代码使用了正则表达式,通过拼接字符串和检查回文特性,判断是否存在一个由字符s中不同字符的回文字符串。
示例2
考虑一个简单的例子,删除字符串中所有的数字字符:
let str = 'hello123world';
let pattern = /\d/g;
let newStr = str.replace(pattern, '');
console.log(newStr); // 'helloworld'
以上代码通过创建一个RegExp对象/\d/g
,匹配字符串中的数字字符,然后将其删除。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript学习小结(7)之JS RegExp - Python技术站