Javascript - 添加到正则表达式

Javascript - Add to a RegEx

本文关键字:正则表达式 添加 Javascript      更新时间:2023-09-26

我正在使用一个在对象上指定正则表达式的库。我需要在该正则表达式中添加一些字符。有没有一种不那么笨拙的方法呢?

我无法控制this.stripCharsRegex.

// this.stripCharsRegex =   /[^0123456789.-]/gi
var regexChars = this.stripCharsRegex.toString();
regexChars = regexChars.substr(3,regex.length-7);  // remove '/[^'  and   ']/gi'
var regex = new RegExp('[^£$€'+regexChars+']','gi');  // (e.g.)
this.stripCharsRegex = regex;
我认为如果您

使用其源属性,您应该能够将新的正则表达式规则与旧的正则表达式对象相结合。试试这个:

this.stripCharsRegex = new RegExp('(?=[^£$€])' + this.stripCharsRegex.source, 'gi');

查看下面的测试代码段。

var stripCharsRegex = new RegExp('[^0123456789.-]', 'gi');
alert( 'Total: $123 test - £80&dd'.replace(stripCharsRegex, '') );
// extend regexp by creating new RegExp object
stripCharsRegex = new RegExp('(?=[^£$€])' + stripCharsRegex.source, 'gi');
alert( 'Total: $123 test - £80&dd'.replace(stripCharsRegex, '') );

这是将字符类添加到任何正则表达式的通用方法

function addCharacterClass(regex, string) {
    var flags = (regex.global ? "g" : "" ) + (regex.ignoreCase ? "i" : "" )
    return new RegExp(regex.source + "|([" + string + "])", flags);
}
document.getElementById('check').addEventListener('click', function(){
   var originalRegex = new RegExp(document.getElementById('regex').value);
   var additionalChars = document.getElementById('chars').value;
   var testString = document.getElementById('test-string').value;
   alert("Does regex match? " + addCharacterClass(originalRegex, additionalChars).test(testString) );
  
});
Original Regex: <input id="regex" value="[^0123456789.-]" /> <br />
Additional Characters: <input id="chars" value="£$€"/> <br />
Test string <input id="test-string" value="$123456"> <br />
<button id="check">Check</button>