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
开头的任何字符序列。在方括号内部,|
表示逻辑“或”操作符$
匹配字符串的结束
总结
[^...]
是正则表达式中非常有用的一个元字符,它可以匹配除了指定字符之外的任何字符。可以与其他元字符组合使用来解决文本处理问题。