目录
5.查找多个匹配 使用.match 和g和i(g代表全局搜索,i代表不区分大小写)
6.使用通配符句号匹配(模糊匹配) 通配符 .将匹配任意字符
7.匹配具有多种可能性的单个字符 [and] 来定义一组你希望匹配的字符
8.匹配字母表 你可以使用hyphen连字符定义要匹配的字符范围:-
9.匹配数字和字母表的字母 /[0-5]/匹配0和5之间的所有数字,包括0和 5
10.匹配未指定的单个字符 不想要匹配的字符之前放置一个插入字符 ^ (不要与^混淆,那个是开头)
请注意,正则表达式中不需要引号。JavaScript有多种方式来使用正则表达式。测试正则表达式的一种方法是使用.test()
方法。
var myString = "Hello, World!";
var myRegex = /Hello/;
var result = myRegex.test(myString);// true
var petString = "James has a pet cat.";
var petRegex = /dog|cat|bird|fish/;
var result = petRegex.test(petString);
var myString = "w3cschool";
var fccRegex = /w3cschool/i;
var result = fccRegex.test(myString);
.match()
方法找到的实际匹配项。"Hello, World!".match(/Hello/);
// 返回 ["Hello"]
var ourStr = "Regular expressions";
var ourRegex = /expressions/;
ourStr.match(ourRegex);
// 返回 ["expressions"]
g
和
i(g代表全局搜索,i代表不区分大小写)
var twinkleStar = "twinkleStar,TwinkleStar";
var starRegex = /Twinkle/gi;//gi代表匹配多个和忽略大小写
var result = twinkleStar.match(starRegex);// ["twinkle", "Twinkle"]
.
将匹配任意字符var humStr = "run,sun,fun,pun,nun";
var unRegex = /un./;
unRegex.test(humStr); //返回true
[
and]
来定义一组你希望匹配的字符题目:在正则表达式vowelRegex
中使用带有元音(a
,e
,i
,o
,u
)的character类,查找字符串quoteSample
中的所有元音。
var quoteSample = 'w3cschool.cn is very good!';
var vowelRegex = /[aeiou]/gi; // 这里添加代码
var result = quoteSample.match(vowelRegex);//["o", "o", "i", "e", "o", "o"]
hyphen
连字符定义要匹配的字符范围:-
var quoteSample = "This school is very goooooooooooooooood.";
var alphabetRegex = /[a-z]/gi;//匹配a-z所有字母
var result = quoteSample.match(alphabetRegex);
/*["T", "h", "i", "s", "s", "c", "h", "o", "o", "l", "i", "s", "v", "e", "r", "y", "g", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "d"]*/
/[0-5]/
匹配0
和5
之间的所有数字,包括0
和 5
var jennyStr = "w3cschool 66666666222";
// 匹配h-s,2-6所有的字符
var myRegex = /[h-s2-6]/gi;
var result = jennyStr.match(myRegex);
// ["3", "s", "h", "o", "o", "l", "6", "6", "6", "6", "6", "6", "6", "6", "2", "2", "2"]
题目:创建一个排除数字与元音的字符的正则表达式。记得在正则表达式中包含适当的标志。
var jennyStr = "w3cschool good 425389019";
var myRegex = /[^0123456789aeiou]/gi;
var result = jennyStr.match(myRegex);
// ["3", "s", "h", "o", "o", "l", "o", "o", "4", "2", "5", "3"]
/a+/g
将在"abc"
中找到一个匹配,并返回["a"]
。因为有+
,它也会在"aabc"
中找到一个匹配项,并返回["aa"]
。如果它改为检查字符串"abab"
,它会查到两个匹配,并返回["a","a"]
,因为两个a
字符不在一行 - 它们之间有一个b
。最后,由于字符串"bcd"
中没有"a"
,所以找不到匹配项。
题目:当s
在"Mississippi"
中出现一次或多次时,你需要找到匹配项。编写使用+
符号的正则表达式。
var Mississippi = 'Mississippis';
var myRegex = /s+/g;
var result = Mississippi.match(myRegex);//["ss", "ss", "s"]
let sWord1 = "Star Wars: Attack of the Clones";
let starWarsRegex = /Star Wars*/;
sWord1.match(starWarsRegex);
//["Star Wars", index: 0, input: "Star Wars: Attack of the Clones", groups: undefined]
你可以使用问号?指定可能存在的元素。这检查前一个元素的零或一。你可以认为这个符号是说前一个元素是可选的。
例如,美英英文略有差异,你可以使用问号来匹配这两个词的拼写。
如https?
var american = "color";
var british = "colour";
var rainbowRegex= /colou?r/;
rainbowRegex.test(american); // 返回 true
rainbowRegex.test(british); // 返回 true
var rickyAndCal = "Cal is first and can be found.";
var calRegex = /^Cal/;// Change this line
calRegex.test(rickyAndCal);
var caboose = "The last car on a train is the caboose";
var lastRegex = /caboose$/;
var result = lastRegex.test(caboose);//返回true
\w匹配任何字类字符,包括下划线,与“[A-Za-z0-9_]”等效。他也是一个个匹配过去的
var text = 'The five boxing wizards jump quickly.';
var alphabetRegexV2 = /\w/g;
var result = text.match(alphabetRegexV2);
//"The five boxing wizards jump quickly."中找到31个字母数字字符
可以使用\W
搜索\w
的相反方向。需要注意,相反的模式使用大写字母。此快捷方式与[^ A-Za-z0-9_]
相同。
var text = 'The five boxing wizards jump quickly.';
var nonAlphabetRegex = /\W/g;
var result = text.match(nonAlphabetRegex);
寻找数字字符的快捷方式是\d
,小写字母d
。这等于character类[0-9]
,它查找零到九之间的任何数字的单个字符
var numRegex = /\d/g;
查找非数字字符的快捷方式是\D
。这等于字符类[^0-9]
,它查找不是零和九之间的数字的单个字符。
var noNumRegex = /\D/g;
/*
1)用户名中唯一的数字必须在末尾。末尾可以有零个或多个数字。
2)用户名字母可以是小写和大写。
3)用户名必须至少有两个字符长度。双字母用户名只能使用字母表的字母字符。
*/
var userCheck = /^\w./g;
你可以使用\s
搜索空格,这是一个小写的s
。此模式不仅匹配空格,还包括回车、制表符、换页和新行字符。你可以将其看作与字符类[ \r\t\f\n\v]
类似,常常用这个带着replace()方法除去开头结尾的空格
var whiteSpace = "Whitespace. Whitespace everywhere!"
var spaceRegex = /\s/g;
whiteSpace.match(spaceRegex);
// 返回 [" ", " "]
使用\S
搜索非空格,这是一个大写的s
。此模式将不匹配空格、回车符、制表符、换页和新行字符。你可以想象它类似于字符类[^ \r\t\f\n\v]
。
var whiteSpace = "Whitespace. Whitespace everywhere!"
var nonSpaceRegex = /\S/g;
whiteSpace.match(nonSpaceRegex).length; // 返回 32
例如,要匹配字符串"ah"
中出现3
到5
次的a
,你的正则表达式将是/a{3,5}h/
var A4 = "aaaah";
var A2 = "aah";
var multipleA = /a{3,5}h/;
multipleA.test(A4); // 返回 true
multipleA.test(A2); // 返回 false
例如,为了仅匹配字符串"hah"
与至少出现3
次的字母a
,你的正则表达式将是/ha{3,}h/
var A4 = "haaaah";
var A2 = "haah";
var A100 = "h" + "a".repeat(100) + "h";
var multipleA = /ha{3,}h/;
multipleA.test(A4); // 返回 true
multipleA.test(A2); // 返回 false
multipleA.test(A100); // 返回 true
为了仅匹配"hah"
中出现3
次的字母a
,你的正则表达式将是/ha{3}h/
var A4 = "haaaah";
var A3 = "haaah";
var A100 = "h" + "a".repeat(100) + "h";
var multipleHA = /a{3}h/;
multipleHA.test(A4); // 返回 false
multipleHA.test(A3); // 返回 true
multipleHA.test(A100); // 返回 false
var wrongText = "The sky is silver.";
var silverRegex = /silver/;
wrongText.replace(silverRegex, "blue");
// 返回 "The sky is blue."
例如:从开头和结尾删除空格
var hello = " Hello, World! ";
var wsRegex1 = /(\s*$)/; // Change this line
var wsRegex2 = /(\s*)/; // Change this line
var result = hello.replace(wsRegex1,"").replace(wsRegex2,"");
// (1)匹配 16 进制颜色值
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
// (2)匹配日期,如 yyyy-mm-dd 格式
var regex = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
// (3)匹配 qq 号
var regex = /^[1-9][0-9]{4,10}$/g;
// (4)手机号码正则
var regex = /^1[34578]\d{9}$/g;
// (5)用户名正则
var regex = /^[a-zA-Z\$][a-zA-Z0-9_\$]{4,16}$/;