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