Javascript 使用正则表达式转换“:&引用;“进入”中:&引用;不剥离断线

Javascript 使用正则表达式转换“:&引用;“进入”中:&引用;不剥离断线,javascript,jquery,regex,Javascript,Jquery,Regex,我试图在textarea内部使用regex,以便去掉或添加空白,这样每当它找到“:”时,“它将转换为“:”(在每一侧添加一个空格) 我目前有以下代码,它在中工作,但给了我错误消息Uncaught SyntaxError:Invalid regular expression:/(?=\n)\s{0,}:\s{0,}(?如果您还使用m多行标志,则可以使用$输入字符结尾来帮助执行此操作 var foo = "Hello world : \nmore text here"; foo.replace(

我试图在textarea内部使用regex,以便去掉或添加空白,这样每当它找到“:”时,“它将转换为“:”(在每一侧添加一个空格)


我目前有以下代码,它在中工作,但给了我错误消息
Uncaught SyntaxError:Invalid regular expression:/(?=\n)\s{0,}:\s{0,}(?如果您还使用
m
多行标志,则可以使用
$
输入字符结尾来帮助执行此操作

var foo = "Hello world   : \nmore text here";
foo.replace(/\s*:\s*$/igm, ' : ');
/* console output: 
> "Hello world : 
> more text here"
*/

如果还使用了
m
多行标志,则可以使用
$
输入字符结尾来帮助完成此操作

var foo = "Hello world   : \nmore text here";
foo.replace(/\s*:\s*$/igm, ' : ');
/* console output: 
> "Hello world : 
> more text here"
*/

如果还使用了
m
多行标志,则可以使用
$
输入字符结尾来帮助完成此操作

var foo = "Hello world   : \nmore text here";
foo.replace(/\s*:\s*$/igm, ' : ');
/* console output: 
> "Hello world : 
> more text here"
*/

如果还使用了
m
多行标志,则可以使用
$
输入字符结尾来帮助完成此操作

var foo = "Hello world   : \nmore text here";
foo.replace(/\s*:\s*$/igm, ' : ');
/* console output: 
> "Hello world : 
> more text here"
*/

出现问题的原因是
\s
匹配了多种类型的空格,包括不希望匹配的换行符。出现错误的原因是使用了浏览器中js正则表达式引擎不支持的正则表达式功能

要保留换行符,请尝试仅使用
\x20
而不是
\s
,即匹配单词空间的确切字符,而不仅仅是通用空格。只需执行以下操作即可:

$('textarea[name="yaml"]').val(
  $('textarea[name="yaml"]').val().replace(/\x20*:\x20*/g, " : ")
);

但是请注意,任何正则表达式解决方案也可以取代正版“:”在YAML值中,以及在空白不重要的地方。我不知道这是否是您想要的。

您遇到了问题,因为
\s
匹配多种类型的空格,包括您不想匹配的换行符。您会看到错误,因为您使用的是js正则表达式的正则表达式功能浏览器中的按下引擎不支持

要保留换行符,请尝试仅使用
\x20
而不是
\s
,即匹配单词空间的确切字符,而不仅仅是通用空格。只需执行以下操作即可:

$('textarea[name="yaml"]').val(
  $('textarea[name="yaml"]').val().replace(/\x20*:\x20*/g, " : ")
);

但是请注意,任何正则表达式解决方案也可以取代正版“:”在YAML值中,以及在空白不重要的地方。我不知道这是否是您想要的。

您遇到了问题,因为
\s
匹配多种类型的空格,包括您不想匹配的换行符。您会看到错误,因为您使用的是js正则表达式的正则表达式功能浏览器中的按下引擎不支持

要保留换行符,请尝试仅使用
\x20
而不是
\s
,即匹配单词空间的确切字符,而不仅仅是通用空格。只需执行以下操作即可:

$('textarea[name="yaml"]').val(
  $('textarea[name="yaml"]').val().replace(/\x20*:\x20*/g, " : ")
);

但是请注意,任何正则表达式解决方案也可以取代正版“:”在YAML值中,以及在空白不重要的地方。我不知道这是否是您想要的。

您遇到了问题,因为
\s
匹配多种类型的空格,包括您不想匹配的换行符。您会看到错误,因为您使用的是js正则表达式的正则表达式功能浏览器中的按下引擎不支持

要保留换行符,请尝试仅使用
\x20
而不是
\s
,即匹配单词空间的确切字符,而不仅仅是通用空格。只需执行以下操作即可:

$('textarea[name="yaml"]').val(
  $('textarea[name="yaml"]').val().replace(/\x20*:\x20*/g, " : ")
);

但是请注意,任何正则表达式解决方案也可以替换正版“:“在YAML值中以及空白不重要的地方。我不知道这是否是您想要的。

如下面的演示所示,
字符串。替换(/:/g,,:')
应该这样做:

var str='duufuduiure:0ee938:\ndjiedj\n\r:dhdhhiekd\r\ndjdfd;:';
$('pre.before')。文本(str);
$('pre.after').text(str.replace(/:/g,:');

之前:

如下演示所示,
string.replace(/:/g,,:')
之后应执行以下操作:

var str='duufuduiure:0ee938:\ndjiedj\n\r:dhdhhiekd\r\ndjdfd;:';
$('pre.before')。文本(str);
$('pre.after').text(str.replace(/:/g,:');

之前:

如下演示所示,
string.replace(/:/g,,:')
之后应执行以下操作:

var str='duufuduiure:0ee938:\ndjiedj\n\r:dhdhhiekd\r\ndjdfd;:';
$('pre.before')。文本(str);
$('pre.after').text(str.replace(/:/g,:');

之前:

如下演示所示,
string.replace(/:/g,,:')
之后应执行以下操作:

var str='duufuduiure:0ee938:\ndjiedj\n\r:dhdhhiekd\r\ndjdfd;:';
$('pre.before')。文本(str);
$('pre.after').text(str.replace(/:/g,:');

之前:

之后:
我有点困惑-你只是想找到一个冒号的所有大小写,并用一个空格冒号替换它们吗?如果只是这样的话,我想你就不必担心换行符了。@DavidHughes出于某种原因,当我按如下方式添加它时,它正在剥离新行:
\s{0,}:\s{0,}/ig
我有点困惑-你只是想找到一个冒号的所有大小写,并用一个空格冒号替换它们吗?如果只是这样的话,我想你就不必担心换行符了。@DavidHughes出于某种原因,当我按如下方式添加它时,它正在剥离新行:
\s{0,}:\s{0,}/ig
我有点困惑-你只是想找到一个冒号的所有大小写,并用一个空格冒号替换它们吗?如果只是这样的话,我想你就不必担心换行符了。@DavidHughes出于某种原因,当我按如下方式添加它时,它正在剥离新行:
\s{0,}:\s{0,}/ig
我有点困惑-您是否只想找到单个冒号的所有病例,并将其替换为间隔的冒号