关于js的正则插件xregexp-all.js 基本说明,支持全部21位全部unicode,全球语言

目的:匹配全球语言标点符号替换为空

 1 //github:  https://github.com/yanglilong127/xregexp
 2 // 官网:http://xregexp.com/api/
 3 //XRegExp(pattern, [flags])
 4 /**
 5 标志的任意组合。
 6 本机标志:
 7 g - 全球
 8 i - 忽略大小写
 9 m - 多线锚
10 u - unicode(ES6)
11 y - 粘性(Firefox 3 +,ES6)
12 其他XRegExp标志:
13 n - 明确的捕获
14 s - 点匹配所有(又名单行)
15 x - 自由间距和行注释(又名扩展)
16 A - astral(需要Unicode Base插件)
17  **/
18 // 使用了'x'修饰符,所以忽略空格且支持行注释
19 //忽略空格指的是正则中的空格被忽略
20 //(?<name>…)这种写法即命名的捕获组
21 // #...为行注释
22 const date = XRegExp(
23     `(?<year>  [0-9]{4} ) -?  # year
24      (?<month> [0-9]{2} ) -?  # month
25      (?<day>   [0-9]{2} )     # day`, 'x');
26  
27 let match = XRegExp.exec('2017-02-22', date);
28 console.log(match)  //是一个对象
29 let format_date=XRegExp.replace('2017-02-22', date, '$<month>/$<day>/$<year>');
30 console.log(format_date)// -> '02/22/2017'
31 
32 console.log(date.test('2017-02-22')) //ture
33 
34 
35 //匹配链方法matchChain
36 //匹配链方法可以从之前的匹配结果中调用下一个正则继续匹配,就像从一个大范围中使用不同的正则不断筛选出你要的数据。
37 //它的语法是XRegExp.matchChain(str, chain)
38 //基本用法:抽取每个<b>标记包裹的数字
39 //(?is)是XRegExp中修饰符前置的语法,它等同于在正则后加修饰符i s
40 XRegExp.matchChain('1 <b>2</b> 3 <b>4 a 56</b>', [
41   XRegExp('(?is)<b>.*?</b>'),
42   /d+/
43 ]);
44 // -> ['2', '4', '56']
45 
46 
47 //所有Unicode令牌都可以使用P{…}或反转p{^…}。令牌名称不区分大小写,任何空格,连字符和下划线都将被忽略。您可以省略单个字母的标记名称的大括号。
48 
49 //测试Unicode类别L(Letter),单词    ^表示开头 $表示结尾
50 var unicodeWord = XRegExp('^\p{L}+$');  //名牌名称L外面的{}可以省略
51 console.log(unicodeWord.test('Русский')) //  - > true 
52 console.log(unicodeWord.test('日本语倒萨大大缩短dssd')) ; //  - > true 
53 console.log(unicodeWord.test('العربية')) ; //  - > true 
54 console.log(unicodeWord.test(',')) ; //  - > false
55 //小写单词令牌 Lowercase_Letter
56 console.log('小写单词:',XRegExp('^\p{Lowercase_Letter}+$').test('vsFdffs'))//false
57 
58 //令牌名称Sc:货币符号  N:数字
59 var unicodeWord = XRegExp('^\p{Sc}+\p{N}*$');
60 console.log(unicodeWord.test('¥$')) //  - > true 
61 console.log('货币和数字:',unicodeWord.test('¥$12①②③⑴⑵⑶ⅠⅡⅢ'))//true 
62 
63 //令牌名称P:标点符号
64 var unicodeWord = XRegExp('\p{P}+');
65 var biaodian=',,。!¡¿-.\'
66 console.log(unicodeWord.test(biaodian)) //  - > true 
67 var str='我是,,bu*-rt。!¡¿-.\-请多指教.﹋﹌︴111'
68 //匹配全部标点符号并替换为空
69 console.log(XRegExp.replace(str, XRegExp('\p{P}+','g'), (match)=>{
70     //console.log(match)
71     return ''
72 }));
73 
74 console.log(XRegExp.replace(str, XRegExp('\p{P}?\p{N}?','g'), (match)=>{
75     //console.log(match)
76     return ''
77 }));
78 
79 //小写字母
80 console.log(XRegExp('^\p{Lowercase}+$','g').test('fadsaw')) //  - > true 
81 //大写字母
82 console.log(XRegExp('^\p{Uppercase}+$','g').test('CFFSA')) //  - > true 
原文地址:https://www.cnblogs.com/burtyang/p/8317550.html