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,我有一个基本字符串,只想在括号之间得到特定的字符 基本字符串:这是一个测试字符串[或多或少] 正则表达式:捕捉所有r和e的作品就好了 (r|e) =>这是一个testring[moreorless] 现在我想使用下面的正则表达式并将其与我的正则表达式分组,以便在括号之间只给出r和e,但不幸的是,这不起作用: \[(r|e)\] 预期结果应为:moreorless 有人能解释一下吗 编辑:问题与此非常相似: 但不同的是,我不想把整个字符串放在括号里 后续问题 base string='这是一

我有一个基本字符串,只想在括号之间得到特定的字符

基本字符串:这是一个测试字符串[或多或少]

正则表达式:捕捉所有r和e的作品就好了

(r|e) 
=>这是一个testring[moreorless]

现在我想使用下面的正则表达式并将其与我的正则表达式分组,以便在括号之间只给出r和e,但不幸的是,这不起作用:

\[(r|e)\]
预期结果应为:moreorless

有人能解释一下吗

编辑:问题与此非常相似:

但不同的是,我不想把整个字符串放在括号里

后续问题

base string='这是一个链接:/en/test/äpfel/öhr[MyLinkäu withäöü]BREAKäöü现在被允许'

我需要一个正则表达式来查找非ascii字符äöü以替换它们,但只能在
链接:…]
子字符串中,该子字符串以单词
链接:
开头,以
]
字符结尾

结果字符串如下所示:

result string='这是一个链接:/en/test/apfel/ohr[MyLink\u with_aou]BREAKäöü现在再次被允许'

注释中的解决方案中的regex
/[äöü]+(?=[^\]\[]*])/g
仅在两个括号之间传递äöü字符

我知道在正则表达式中有一个前瞻性的字符列表,但我想知道为什么这个列表不起作用:

/link:([äöü]+(?=[^\]\[]*])/


谢谢

您可以使用以下解决方案:匹配
链接:
]
之间的所有字符,并仅在替换回调方法中的匹配子字符串中替换字符:

var hashmap={“ä”:“a”,“ö”:“o”,“ü”:“u”};
var s='这是一个链接:/en/test/äpfel/öhr[MyLink_withäöü]BREAKäöü现在被允许';
var res=s.replace(/\blink:[^\]]*/g,函数(m){//m=link:/en/test/äpfel/öhr[MyLinkäu withäöü]
返回m.replace(/[äöü]/g,函数(n){//n=ä,thenö,thenü,
返回hashmap[n];//每次都替换为hashmap值
});
});

console.log(res);
您可以使用以下解决方案:匹配
链接:
]
之间的所有字符,并仅在替换回调方法中的匹配子字符串中替换字符:

var hashmap={“ä”:“a”,“ö”:“o”,“ü”:“u”};
var s='这是一个链接:/en/test/äpfel/öhr[MyLink_withäöü]BREAKäöü现在被允许';
var res=s.replace(/\blink:[^\]]*/g,函数(m){//m=link:/en/test/äpfel/öhr[MyLinkäu withäöü]
返回m.replace(/[äöü]/g,函数(n){//n=ä,thenö,thenü,
返回hashmap[n];//每次都替换为hashmap值
});
});

console.log(res);
定义“不工作”。“预期结果应该是:或多或少”不清楚你的意思是什么。你是说一次调用
exec
?一个循环的结果吗?它根本不匹配。我用这个正则表达式替换给定字符串的所有r和e。第一个对整个字符串有效。但是第二个只应在括号之间进行替换的正则表达式不起作用。Checking with regex101.com提供:“您的正则表达式与主题字符串不匹配。”由于JS regex中没有类似于PCRE的
(*SKIP)(?!)
或无限宽度查找支持,您可以使用常见的hack-。如果您需要更高的精度,请使用
/\[^\][*]/g
然后只在匹配项中对
e
s和
r
s执行您需要的操作。您对JS中的正则表达式期望过高。不要这样做。如果没有任何关于您需要执行操作的详细信息,进一步的聊天就没有意义。定义“不起作用”。“预期结果应该是:或多或少”不清楚你的意思是什么。你是说一次调用
exec
?一个循环的结果吗?它根本不匹配。我用这个正则表达式替换给定字符串的所有r和e。第一个对整个字符串有效。但是第二个只应在括号之间进行替换的正则表达式不起作用。Checking with regex101.com提供:“您的正则表达式与主题字符串不匹配。”由于JS regex中没有类似于PCRE的
(*SKIP)(?!)
或无限宽度查找支持,您可以使用常见的hack-。如果您需要更高的精度,请使用
/\[^\][*]/g
然后只在匹配中对
e
s和
r
s做你需要做的事情。你对JS中的正则表达式期望太高了。不要这样做。如果没有关于你需要做什么的任何细节,进一步的聊天就没有意义。这是给定后续问题的解决方案。非常感谢你+1实际上,我认为这是你真正需要的因为原始问题是XY问题。这是给定后续问题的解决方案。非常感谢+1实际上,我认为这是您真正需要的,因为原始问题是XY问题。