JavaScript正则表达式 – [^...]
正则表达式在 JavaScript 中使用极为广泛,能够高效地解决文本处理问题,其中[^…]是一个强大的元字符,用于匹配除了指定字符之外的所有字符。
匹配语法
[^...]表示不匹配指定字符中的任何一个,并且必须出现在匹配的文本中。
例如,[^abc]匹配除了 a、b、c 以外的任何单个字符。下面是一个示例:
const regex = /[^abc]/;
console.log(regex.test('hello')); // true
console.log(regex.test('world')); // true
console.log(regex.test('abc')); // false
console.log(regex.test('123')); // true
在上面的示例中,正则表达式/[^abc]/匹配字符集中除了a、b、c之外的任何一个字符。前两个console.log语句输出true,因为字符串中并没有a、b、c这三个字符,第三个console.log语句输出false,因为字符串中包含了a字符,最后一个console.log语句输出true,因为字符串中不包含a、b、c这三个字符。
[^...]还可以与其他元字符进行组合使用,如[^ab]*表示匹配以任何字符开始,但不是a或b的任何字符序列。
例如,下面示例匹配以http或https开头的URL,但不匹配以ftp或file开头的URL:
const regex = /^(http|https)[^ftp|file]*$/;
console.log(regex.test('https://www.baidu.com')); // true
console.log(regex.test('http://www.baidu.com/s?ie=utf-8&f=3')) // true
console.log(regex.test('file:///home/user/file.txt')); // false
console.log(regex.test('ftp://mirror.download.com/logs.txt')); // false
正则表达式解释:
^匹配字符串的开始(http|https)表示匹配http或https[^ftp|file]*表示匹配以http或https开头,但不匹配以ftp或file开头的任何字符序列。在方括号内部,|表示逻辑“或”操作符$匹配字符串的结束
总结
[^...]是正则表达式中非常有用的一个元字符,它可以匹配除了指定字符之外的任何字符。可以与其他元字符组合使用来解决文本处理问题。
极客笔记