JS正则实测记录
一、正则两种主要表现形式
格式:正则表达式主体,修饰符(可选)
var patt1=new RegExp(“Hello”,“g”); //形式1
var patt2=/Hello/g; //形式2
var str=“hello ! World, Hello ! Programmer,Hello ! EveryBody”;
str.replace(patt1,“你好”)
str.replace(patt2,“你好”)
//两者的结果会一致//
//hello ! World, 你好 ! Programmer,你好! EveryBody
二、正则常用方法
所有例子以str为例
str=“hello !World, Hello!Programmer,Hello!1234567890”
1、修饰符
符号 | 作用 | 例子 |
---|---|---|
i | 忽略大小写。 | var patt=/Hello/i; str.replace(patt,“你好”) 结果:你好 ! World, Hello! Programmer,Hello! 1234567890 |
g | 全局匹配。 | var patt=/Hello/g; str.replace(patt,“你好”) 结果:hello ! World, 你好 ! Programmer,你好 ! 1234567890 |
m | 多行匹配。 | 没用过 |
如果需要同时用到两种修饰符
这样写:var patt=/Hello/ig;
2、方括号
注意:以下都没有写/g,所以只会查询到第一个在查询范围内的值就停止了!
表达式 | 作用 | 例子 |
---|---|---|
[xyz] | 查找方括号之间的任意一个字符 | var patt=/[ao]/; str.replace(patt,“换”) 结果:hell 换 ! World, Hello! Programmer,Hello! 1234567890 |
[ ^xyz] | 查找任何不在方括号之间的字符。 | 同上相反 |
[ 0-9] | 查找任何从 0 至 9 的数字。 | var patt=/[5-8]/; str.replace(patt,“换”) 结果:hello ! World, Hello! Programmer,Hello! 1234换67890 |
[A-z] | 查找任何从大写 A 到小写 z 的字符 。 | 同上 |
3、元字符
注意:只展示本人常用
字符 | 作用 |
---|---|
\w | 查找单词字符。 |
\W | 查找非单词字符。 |
\d | 查找数字。 |
\D | 查找非数字。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\0 | 查找 NULL 字符。 |
\n | 查找换行符。 |
\r | 查找回车符。 |
4、量词
注意:只展示本人常用
字符 | 作用 | 例子 |
---|---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 | /a+/ 匹配 “candy” 中的 “a”,“caaaaaaandy” 中所有的 “a”。 |
n* | 匹配任何包含零个或多个 n 的字符串。 | /bo*/ 匹配 “A ghost booooed” 中的 “boooo”,“A bird warbled” 中的 “b”,但是不匹配 “A goat grunted” |
n? | 匹配任何包含零个或一个 n 的字符串。 | /e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。 |
n{X} | 匹配包含 X 个 n 的序列的字符串。 | /a{2}/ 不匹配 “candy,” 中的 “a”,但是匹配 “caandy,” 中的两个 “a”,且匹配 “caaandy.” 中的前两个 “a”。 |
n{X,} | X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。 | /a{2,}/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy” 和 “caaaaaaandy.” 中所有的 “a”。 |
n{X,Y} | X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。 | /a{1,3}/ 不匹配 “cndy”,匹配 “candy,” 中的 “a”,“caandy,” 中的两个 “a”,匹配 “caaaaaaandy” 中的前面三个 “a”。 注意,当匹配 “caaaaaaandy” 时,即使原始字符串拥有更多的 “a”,匹配项也是 “aaa”。 |
n$ | 匹配任何结尾为 n 的字符串。 | /y$/ 匹配 “candy,” 中的 “y”。 注意,当匹配 “Toney has many candy” 时,即使看起来有多个以y结尾的单词,匹配项也只是 "candy"中的“y”,因为他是匹配整个字符串的结尾。 |
^n | 匹配任何开头为 n 的字符串。 | 同上,只匹配整个字符串的开头 |
5、常用
替换正反斜杠这种会转义的要在前面加""
let str=“http://”;
str=str.replace(///g,“哈”);
console.log(str);//输出"http:哈哈"
手机号正则检验
/^1[3456789]\d{9}$/.test(mobile)
替换scss编译后的[]那段内容
[(?!’)\S*]