您的位置:

正则表达式非:从多个方面探讨

一、正则表达式非匹配

正则表达式非匹配指的是在匹配时排除某些特定字符或模式,通常使用"^"表示非,例如:

var str = "hello world";
var pattern = /[^e]/g;
console.log(str.match(pattern)); // ["h", "l", "l", "o", " ", "w", "o", "r", "l", "d"]

上面的代码中,"^"表示匹配除了"e"以外的任意字符。

在实际应用中,非匹配可以用于排除一些特定字符或标点符号,或者用于匹配除了某些规定字符集以外的内容。

二、正则表达式非括号

正则表达式非括号指的是在匹配时排除一组括号中的字符或模式。在括号之前加上"^"表示非,例如:

var str = "hello world";
var pattern = /[^eol]/g;
console.log(str.match(pattern)); // ["h", "l", "l", "w", "r", "d"]

上面的代码中,"[^eol]"表示匹配除了"e"、"o"、"l"以外的任意字符。

非括号的应用场景与非匹配相似,但更灵活,因为可以排除一个字符集合而不只是单个字符。

三、正则表达式非数字

正则表达式非数字指的是在匹配时排除数字,通常使用"\D"表示非数字的字符,例如:

var str = "hello 123 world";
var pattern = /\D/g;
console.log(str.replace(pattern, "")); // "123"

上面的代码中,"\D"表示匹配除了数字以外的任意字符,使用replace方法将匹配到的非数字字符替换为空字符串,保留数字。

非数字的应用场景很多,例如在输入文本框中只允许输入非数字字符。

四、正则表达式非字母

正则表达式非字母指的是在匹配时排除字母,通常使用"\W"表示非字母的字符,例如:

var str = "hello world 123";
var pattern = /\W/g;
console.log(str.replace(pattern, "")); // "helloworld123"

上面的代码中,"\W"表示匹配除了字母以外的任意字符,使用replace方法将匹配到的非字母字符替换为空字符串。

非字母的应用场景很多,例如在输入文本框中只允许输入非字母字符。

五、正则表达式非贪婪匹配

正则表达式非贪婪匹配指的是在匹配时尽可能少地匹配字符,通常使用"?"表示非贪婪匹配,例如:

var str = "
  

hello world

"; var pattern = /<.+?>/g; console.log(str.match(pattern)); // ["
", "

", "

", "
"]

上面的代码中,"<.+?>"表示匹配"<"和">"之间的任意字符,"?"表示非贪婪匹配。

非贪婪匹配的应用场景很多,例如在匹配HTML标签时避免匹配到闭合标签之前的所有内容。

六、正则表达式非空字符串

正则表达式非空字符串指的是在匹配时排除空字符串,通常使用"\S"表示非空字符,例如:

var str1 = "hello world";
var str2 = "    ";
var pattern = /\S+/g;
console.log(str1.match(pattern)); // ["hello", "world"]
console.log(str2.match(pattern)); // null

上面的代码中,"\S+"表示匹配至少一个非空字符,null表示未匹配到任何非空字符。

非空字符串的应用场景很多,例如在校验表单输入框中是否为空。

七、正则表达式非数字和字母

正则表达式非数字和字母指的是在匹配时排除数字和字母,通常使用"\W"和"\D"组合使用表示非数字和字母的字符,例如:

var str = "hello world 123";
var pattern = /[^\w\d]+/g;
console.log(str.split(pattern)); // ["hello", "world"]

上面的代码中,"[^\w\d]+"表示匹配除了数字和字母以外的任意字符,使用split方法将匹配到的非数字和字母字符作为分隔符分割字符串。

非数字和字母的应用场景很多,例如在校验密码时要求必须包含非数字和字母字符。

八、正则表达式非空验证

正则表达式非空验证指的是在匹配时验证字符串是否为空,通常使用"^$"表示匹配空字符串,再使用"^$"的非匹配表示非空字符串,例如:

var str1 = "";
var str2 = "hello world";
var pattern = /^[^\s]+$/;
console.log(pattern.test(str1)); // false
console.log(pattern.test(str2)); // true

上面的代码中,"^[^\s]+$"表示匹配至少一个非空字符的字符串,"^$"的非匹配表示非空字符串。

非空验证的应用场景很多,例如在用户注册中要求必须填写所有必填项。

九、正则表达式非字符串

正则表达式非字符串指的是在匹配时排除特定字符串,通常使用"(?!)"表示非,例如:

var str = "hello world";
var pattern = /(?!world)\w+/g;
console.log(str.match(pattern)); // ["hello"]

上面的代码中,"(?!world)"表示排除匹配"world","\w+"表示匹配至少一个字母或数字字符的字符串。

非字符串的应用场景很多,例如在匹配URL时排除特定文件夹或文件。

十、正则表达式非数字字符

正则表达式非数字字符指的是在匹配时排除数字以外的字符,通常使用"\D"表示非数字字符,例如:

var str = "hello world 123";
var pattern = /[^\d]+/g;
console.log(str.split(pattern)); // ["hello world ", ""]

上面的代码中,"[^\d]+"表示排除匹配至少一个数字字符,使用split方法将匹配到的非数字字符作为分隔符分割字符串。

非数字字符的应用场景很多,例如在校验表单输入框中只允许数字字符。