我需要有关正则表达式的帮助。我有以下字符串:\\lorem\ipsum\dolor,\\sit\amet\conseteteur,\\sadipscing\elitr\sed\diam并想要得到结果:["dolor", "conseteteur", "diam"]所以用词来表示最后一个反斜杠和逗号或末尾之间的单词。我已经弄清楚了test可以正常工作,但是由于某些原因它无法在Chrome(v44.0.2403.130)和IE(v11.0.9600.17905)控制台中都不起作用。我得到的结果是:您能否告诉我,为什么在线测试仪无法正常工作,我如何才能获得正确的结果?提前致谢。PS:我已经测试了一些在线正则表达式测试器,所有结果都相同。 (regex101.com,regexpal.com,debuggex.com,scriptular.com) (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 字符串'\\lorem\ipsum\dolor,\\sit\amet\conseteteur,\\sadipscing\elitr\sed\diam'正在逃脱,如果您在浏览器的控制台中尝试以下操作,将会看到发生了什么:var s = '\\lorem\ipsum\dolor,\\sit\amet\conseteteur,\\sadipscing\elitr\sed\diam'console.log(s);// prints '\loremipsumdolor,\sitametconseteteur,\sadipscingelitrseddiam'要使用原始字符串,您必须添加其他反斜杠,否则它将变成一个不同的反斜杠,因为它会尝试转义任何后跟一个反斜杠的字符。它在regexp测试人员中起作用的原因是,他们可能会清理输入字符串以确保按原样对其进行评估。尝试以下操作(为它们每个添加一个额外的\):str = '\\\\lorem\\ipsum\\dolor,\\\\sit\\amet\\conseteteur,\\\\sadipscing\\elitr\\sed\\diam're = /\\([^\\]*)(?:,|$)/gstr.match(re)// should output ["\dolor,", "\conseteteur,", "\diam"]更新您不能阻止解释器在字符串文字中转义反斜杠,但是EcmaScript6将此功能随附为String.raws = String.raw`\\lorem\ipsum\dolor,\\sit\amet\conseteteur,\\sadipscing\elitr\sed\diam`请记住,在String.raw中使用反引号而不是单引号。它可以在最新的Chrome浏览器中运行,但是对于所有其他浏览器,如果它们过时,则可能无法实现。另外,如果要避免匹配最后一个反斜杠,则需要:删除正则表达式开始处的\\使用+而不是*避免与行尾匹配(这将创建一个额外的捕获)使用正向超前?=像这样s = String.raw`\\lorem\ipsum\dolor,\\sit\amet\conseteteur,\\sadipscing\elitr\sed\diam`;re = /([^\\]+)(?=,|$)/g;s.match(re);// ["dolor", "conseteteur", "diam"]关于javascript - 正则表达式:获取逗号前最后一个字符出现之间的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31860236/ (adsbygoogle = window.adsbygoogle || []).push({});
10-09 14:34