【问题标题】:JavaScript regex for underscore not working下划线的 JavaScript 正则表达式不起作用
【发布时间】:2021-08-04 22:51:16
【问题描述】:

我使用了其他问题,但到目前为止都被难住了。

这不会删除下划线。

错在哪里

var myString = str.toLowerCase().replace(/\W+/
 myString= myString.replace('/\_/g','');

【问题讨论】:

  • 你的第一行好像被截断了。
  • 它可能不会删除下划线,因为第二行永远不会执行,因为第一行会导致语法错误。看看控制台。

标签: javascript regex


【解决方案1】:

一般来说,您可以删除字符串中的所有下划线,使用

const myString = '_123__abc___-Some-Text_';
console.log(myString.replace(/_/g, ''));
console.log(myString.replaceAll('_', ''));

然而,在这个问题中,将/_/g/\W+/g 正则表达式组合成一个/[\W_]+/g 是有意义的。 \W 模式匹配除 ASCII 字母、数字 _ 之外的任何字符,因此我们需要一个自定义字符类来匹配这两种模式。

使用

var myString = str.toLowerCase().replace(/[\W_]+/g,'');

其中[\W_]+ 匹配除单词字符之外的一个或多个字符 _

请参阅online regex demo

【讨论】:

  • 它也匹配其他非字母符号
  • @AlexeyBaguk 无论您所说的“非字母符号”是什么意思都不清楚。当前的 OP 问题是删除所有匹配 \W_ 模式的子字符串,因此 对于当前问题.replace(/[\W_]+/g, '') 是合适的答案。如果您需要特殊字符的正则表达式,请参阅Check for special characters in string。如果您需要其他任何内容,请提供更具体的详细信息(测试用例、小提琴、codepen 等)并说明您寻求的行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多