javascript - 使用正则表达式将 ":"转换为 ": "而不去除换行符

标签 javascript jquery regex

我试图在文本区域内使用正则表达式来删除或添加空格,这样每当它找到“:”时,它就会被转换为“:”(每侧添加一个空格)。

我目前有以下代码,适用于 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/

相关文章:

javascript - 循环每个输入的相对记录并纠正重复记录

javascript - 跨度内的复选框

regex - 正则表达式和汇编

在文本区域输入一些文本后,Javascript 无法更改文本

javascript - 自定义 Soundcloud 可视化工具 webgl

javascript - 如果更多元素具有此类,则 .click 函数不适用于类

c# - 希伯来语、英语、符号的正则表达式

正则表达式删除一行中第一个空格出现之前的所有内容?

javascript - React-native-game-engine + Matter.js 动态缩放物体

javascript - JavaScript中有多少种文字?