目的:匹配全球语言标点符号替换为空
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