当前位置: 首页 > 工具软件 > ko > 使用案例 >

KO 正则表达式

汪栋
2023-12-01

       

目录

1.测试方法:/.../   .test();

 2.匹配不同可能性的文字字符串 | 

3.在匹配时忽略大小写 /.../i

4.提取匹配 使用.match()方法找到的实际匹配项。

5.查找多个匹配 使用.match 和g和i(g代表全局搜索,i代表不区分大小写)

6.使用通配符句号匹配(模糊匹配) 通配符 .将匹配任意字符

7.匹配具有多种可能性的单个字符  [and] 来定义一组你希望匹配的字符

 8.匹配字母表 你可以使用hyphen连字符定义要匹配的字符范围:-

9.匹配数字和字母表的字母 /[0-5]/匹配0和5之间的所有数字,包括0和 5

10.匹配未指定的单个字符 不想要匹配的字符之前放置一个插入字符 ^ (不要与^混淆,那个是开头)

11.匹配一次或多次出现的字符 +

 12.匹配零次或更多次出现的字符*

25.检查匹配零次或一次的字符 ?

13.匹配字符串开头的模式 ^(注意区别取反)

 14.匹配字符串末尾的模式$

15.匹配所有字母和数字 \w

16.匹配除字母和数字外的所有 \W

17.匹配所有数字 \d

18.匹配所有非数字 \D

19.合理的限制用户名 

20.匹配空格 \s

21.匹配非空格字符 \S

22.指定匹配的上限和下限数 {上限,下限}

23.仅指定匹配的下限数 {上限, }

24.指定匹配的准确数量{数字}

 26.使用捕获组进行搜索和替换 .replace();

赠送几个常见的正则匹配:


                                

1.测试方法:/.../   .test();

请注意,正则表达式中不需要引号。JavaScript有多种方式来使用正则表达式。测试正则表达式的一种方法是使用.test()方法。

var myString = "Hello, World!";
var myRegex = /Hello/;
var result = myRegex.test(myString);// true

 2.匹配不同可能性的文字字符串

var petString = "James has a pet cat.";
var petRegex = /dog|cat|bird|fish/; 
var result = petRegex.test(petString);

3.在匹配时忽略大小写 /.../i

var myString = "w3cschool";
var fccRegex = /w3cschool/i;
var result = fccRegex.test(myString);

4.提取匹配 使用.match()方法找到的实际匹配项。

"Hello, World!".match(/Hello/);
// 返回 ["Hello"]
var ourStr = "Regular expressions";
var ourRegex = /expressions/;
ourStr.match(ourRegex);
// 返回 ["expressions"] 

5.查找多个匹配 使用.match gi(g代表全局搜索,i代表不区分大小写)

var twinkleStar = "twinkleStar,TwinkleStar";
var starRegex = /Twinkle/gi;//gi代表匹配多个和忽略大小写
var result = twinkleStar.match(starRegex);// ["twinkle", "Twinkle"]

6.使用通配符句号匹配(模糊匹配) 通配符 .将匹配任意字符

var humStr = "run,sun,fun,pun,nun";
var unRegex = /un./; 
unRegex.test(humStr); //返回true

7.匹配具有多种可能性的单个字符  [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"]

 8.匹配字母表 你可以使用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"]*/

9.匹配数字和字母表的字母 /[0-5]/匹配05之间的所有数字,包括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"]

10.匹配未指定的单个字符 不想要匹配的字符之前放置一个插入字符 ^ (不要与^混淆,那个是开头)

题目:创建一个排除数字与元音的字符的正则表达式。记得在正则表达式中包含适当的标志。

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"]

11.匹配一次或多次出现的字符 +

/a+/g将在"abc"中找到一个匹配,并返回["a"]。因为有+,它也会在"aabc"中找到一个匹配项,并返回["aa"]。如果它改为检查字符串"abab",它会查到两个匹配,并返回["a","a"],因为两个字符不在一行 - 它们之间有一个b。最后,由于字符串"bcd"中没有"a",所以找不到匹配项。

题目:当s"Mississippi"中出现一次或多次时,你需要找到匹配项。编写使用+符号的正则表达式。

var Mississippi = 'Mississippis';
var myRegex = /s+/g; 
var result = Mississippi.match(myRegex);//["ss", "ss", "s"]

 12.匹配零次或更多次出现的字符*

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]

25.检查匹配零次或一次的字符 ?

你可以使用问号?指定可能存在的元素。这检查前一个元素的零或一。你可以认为这个符号是说前一个元素是可选的。

例如,美英英文略有差异,你可以使用问号来匹配这两个词的拼写。

如https?

var american = "color";    
var british = "colour";    
var rainbowRegex= /colou?r/;    
rainbowRegex.test(american); // 返回 true    
rainbowRegex.test(british); // 返回 true

13.匹配字符串开头的模式 ^(注意区别取反)

var rickyAndCal = "Cal is first and can be found.";
var calRegex = /^Cal/;// Change this line
calRegex.test(rickyAndCal);

 14.匹配字符串末尾的模式$

var caboose = "The last car on a train is the caboose";
var lastRegex = /caboose$/;
var result = lastRegex.test(caboose);//返回true

15.匹配所有字母和数字 \w

      \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个字母数字字符

16.匹配除字母和数字外的所有 \W

   可以使用\W搜索\w的相反方向。需要注意,相反的模式使用大写字母。此快捷方式与[^ A-Za-z0-9_]相同。

var text = 'The five boxing wizards jump quickly.';
var nonAlphabetRegex = /\W/g;
var result = text.match(nonAlphabetRegex);

17.匹配所有数字 \d

寻找数字字符的快捷方式是\d,小写字母d。这等于character类[0-9],它查找零到九之间的任何数字的单个字符

var numRegex = /\d/g; 

18.匹配所有非数字 \D

查找非数字字符的快捷方式是\D。这等于字符类[^0-9],它查找不是零和九之间的数字的单个字符。

var noNumRegex = /\D/g;

19.合理的限制用户名 

/*
1)用户名中唯一的数字必须在末尾。末尾可以有零个或多个数字。

2)用户名字母可以是小写和大写。

3)用户名必须至少有两个字符长度。双字母用户名只能使用字母表的字母字符。
*/
var userCheck = /^\w./g; 

 

20.匹配空格 \s

你可以使用\s搜索空格,这是一个小写的s。此模式不仅匹配空格,还包括回车、制表符、换页和新行字符。你可以将其看作与字符类[ \r\t\f\n\v]类似,常常用这个带着replace()方法除去开头结尾的空格

var whiteSpace = "Whitespace. Whitespace everywhere!"
var spaceRegex = /\s/g;
whiteSpace.match(spaceRegex);
// 返回 [" ", " "]

21.匹配非空格字符 \S

使用\S搜索非空格,这是一个大写的s。此模式将不匹配空格、回车符、制表符、换页和新行字符。你可以想象它类似于字符类[^ \r\t\f\n\v]

var whiteSpace = "Whitespace. Whitespace everywhere!"
var nonSpaceRegex = /\S/g;
whiteSpace.match(nonSpaceRegex).length; // 返回 32

22.指定匹配的上限和下限数 {上限,下限}

例如,要匹配字符串"ah"中出现35次的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

 

23.仅指定匹配的下限数 {上限, }

例如,为了仅匹配字符串"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

24.指定匹配的准确数量{数字}

 为了仅匹配"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

 26.使用捕获组进行搜索和替换 .replace();

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}$/;

参考文献1 正则表达式1

参考文献2 史上最全的正则表达式

 类似资料: