我试图在文本区域内使用正则表达式来删除或添加空格,这样每当它找到“:”时,它就会被转换为“:”(每侧添加一个空格)。
我目前有以下代码,适用于 this regex site ,但给我错误消息 Uncaught SyntaxError: Invalid regular expression: /(?=\n)\s{0,}:\s{0,}(?<=\n)/: Invalid group
:
$('textarea[name="yaml"]').val(
$('textarea[name="yaml"]').val().replace(/(?=\n)\s{0,}:\s{0,}(?<=\n)/ig,
" : "));
最佳答案
您遇到问题,因为 \s
匹配多种空格,包括您不想匹配的换行符。您看到错误是因为您使用的正则表达式功能是浏览器中的 js 正则表达式引擎不支持的。
要保留换行符,请尝试仅使用 \x20
而不是 \s
,即匹配单词空间的确切字符,而不仅仅是通用空格。只需执行以下操作就足够了:
$('textarea[name="yaml"]').val(
$('textarea[name="yaml"]').val().replace(/\x20*:\x20*/g, " : ")
);
但是请注意,任何正则表达式解决方案也可以替换 YAML 值中真正的“:”以及空格无关紧要的位置。我不知道这是否是你想要的。
关于javascript - 使用正则表达式将 ":"转换为 ": "而不去除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695764/