Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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_String - Fatal编程技术网

Javascript 仅当字符串后面没有左方括号或点运算符时才替换字符串,即;[“或”或“或”;

Javascript 仅当字符串后面没有左方括号或点运算符时才替换字符串,即;[“或”或“或”;,javascript,regex,string,Javascript,Regex,String,[Javascript]我只想在字符串后面没有左方括号或点运算符,即“[”和“.”时替换字符串 e、 g.1如果字符串为“ABCD[”,则不应替换该字符串,因为该字符串后跟左方括号 e、 g.2如果字符串为“ABCD”,则不应替换,因为该字符串后跟点运算符 e、 g.3如果字符串为“ABC”,则应将其替换为目标字符串,因为字符串后面没有左方括号,也没有点运算符 e、 g.4如果字符串为“ABCD ABCD[”,则此处应仅替换第一个单词 下面是我使用过的代码: var val = "ABC"; v

[Javascript]我只想在字符串后面没有左方括号或点运算符,即“[”和“.”时替换字符串

e、 g.1如果字符串为“ABCD[”,则不应替换该字符串,因为该字符串后跟左方括号

e、 g.2如果字符串为“ABCD”,则不应替换,因为该字符串后跟点运算符

e、 g.3如果字符串为“ABC”,则应将其替换为目标字符串,因为字符串后面没有左方括号,也没有点运算符

e、 g.4如果字符串为“ABCD ABCD[”,则此处应仅替换第一个单词

下面是我使用过的代码:

var val = "ABC";
var find = val+"(?!\\[)";
var re = new RegExp(find, 'g');
var inputstring = "ABC[";
var replacewith = "PQR";
inputstring = inputstring.replace(re,replacewith);
'ABC['.replace(re, 'PQR');
"ABC["
'ABC.'.replace(re, 'PQR');
"ABC."
'ABC-'.replace(re, 'PQR');
"PQR-"

谢谢您的帮助。

您的正则表达式在负前瞻中缺少点。请这样使用:

var val = "ABC";
var find = val+"(?![\\[.])";
var re = new RegExp(find, 'g');
测试:

var val = "ABC";
var find = val+"(?!\\[)";
var re = new RegExp(find, 'g');
var inputstring = "ABC[";
var replacewith = "PQR";
inputstring = inputstring.replace(re,replacewith);
'ABC['.replace(re, 'PQR');
"ABC["
'ABC.'.replace(re, 'PQR');
"ABC."
'ABC-'.replace(re, 'PQR');
"PQR-"

再次感谢阿努巴瓦:)