Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式与换行减号_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式与换行减号

Javascript 正则表达式与换行减号,javascript,regex,Javascript,Regex,这是我的密码 var string = 'number1 + number2 - number3'; var operators = [ {o: '+', regex: '\\+'}, {o: '-', regex: '\\-'} ]; $.each(operators, function(i, operator){ string = string.replace( new RegExp(operator.regex, "g"), '<span

这是我的密码

var string = 'number1 + number2 - number3';
var operators = [
   {o: '+', regex: '\\+'},
   {o: '-', regex: '\\-'}
];

$.each(operators, function(i, operator){
    string = string.replace(
      new RegExp(operator.regex, "g"),
      '<span class="formula-operator">' + operator.o + '</span>'
    );
});
var字符串='number1+number2-number3';
var运算符=[
{o:'+',正则表达式:'\\+'},
{o:'-',正则表达式:'\\-'}
];
$。每个(运算符,函数(i,运算符){
string=string.replace(
新的RegExp(operator.regex,“g”),
''运算符+o''
);
});

我的CSS类被替换了两次。如何更改正则表达式?

如果不需要运算符数组本身,可以使用单个正则表达式:

string=string.replace(/[+-]/g,operator=>“”+operator+“”)

(否则,可以基于运算符本身构建此表达式)

PS,第二次替换发生是因为


编辑:动态构建表达式的示例:

var string = 'number1 + number2 - number3';
var operators = ['+','-'];

string = string.replace(
            new RegExp('[' + operators.join('') + ']', "g"), 
      o => '<span class="formula-operator">' + o + '</span>');
var字符串='number1+number2-number3';
变量运算符=['+','-'];
string=string.replace(
新的RegExp('['+运算符.join(''+']',“g”),
o=>''+o+'';

您可以使用lookaheads来确保我们不在span标记内

var operators = [ 
   {o: '+', regex: '\\+(?![^<]*</span>)'}, 
   {o: '-', regex: '\\-(?![^<]*</span>)'} 
];
var运算符=[

{o:'+',regex:'\\+(?![^ПГcrmk_,
var操作符=[{o:'+',regex:'\+(?![^@WiktorStribiżew,是的,很好。谢谢。仅供参考:不需要在这个字符类中转义
+
-
这只是一个例子。在现实生活中,我有许多其他的替代品。正则表达式字符串可以使用任何类型的集合构建(尽管您当前的问题可以通过使用另一个类名,例如
公式\运算符来解决
)。我添加了一个带有运算符数组的示例。如果需要,也可以使用带有额外映射的原始数组。