使用正则表达式将 “:” 转换为 “ : ”,而不去除换行符
Use regex to convert ":" into " : " without stripping out line breaks
我正在尝试在文本区域内使用正则表达式以去除或添加空格,这样每当它找到":"时,它就会转换为" : "(每侧添加一个空格)。
我目前有以下代码,它适用于此正则表达式站点,但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 值中真正的":",以及仅在空格无关紧要的地方替换。我不知道这是否是你想要的。
如下面的演示所示,string.replace(/:/g, ' : ')
应该这样做:
var str = 'duufuduiure:0ee938:'ndjiedj'n'r:dhdhhiekd'r'ndjdfd;:';
$('pre.before').text( str );
$('pre.after').text( str.replace(/:/g, ' : ') );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
before: <pre class="before"></pre>
after: <pre class="after"></pre>
如果您还使用 m
多行标志,则可以使用输入字符的$
结尾来帮助解决此问题。
var foo = "Hello world : 'nmore text here";
foo.replace(/'s*:'s*$/igm, ' : ');
/* console output:
> "Hello world :
> more text here"
*/
相关文章:
- 如何在映射数组中添加换行符
- JQuery:向多个匹配结果添加换行符的最简单方法
- 在文本区域中使用jQuery.text()保持换行符
- javascript替换换行符和特殊字符
- 换行符拆分返回“”;未定义”;
- 如何使用web浏览器在NoSQL数据中呈现换行符
- 换行符插入jquery选择器
- jquery使用val()复制值似乎可以删除换行符
- 文本区域-获取每一行,找到换行符
- 处理字段中带有换行符的csv文件-node.js
- 使用jquery将单个换行符替换为span元素
- 使用正则表达式将 “:” 转换为 “ : ”,而不去除换行符
- 如何在删除换行符的同时将 HTML 文本转换为 javascript 变量
- 将 换行符转换为 HTML
换行符 - 将包含换行符的Java变量转换为javascript变量
- 如何防止IE将文本区换行符转换为单个空格
- 将文本区换行符转换为
和& lt; br /比;JavaScript标记
- 使用Node.js将换行符从JS转换为HTML
- 将以换行符分隔的数字列表转换成一行
- 如何将html代码转换为字符串,将换行符替换为 ,将制表符替换为