正则表达式 ro 转换为小写,去除非字母数字并替换空白 jQuery

Posted

技术标签:

【中文标题】正则表达式 ro 转换为小写,去除非字母数字并替换空白 jQuery【英文标题】:Regex ro convert to lower case, strip non-alphanum and replace whitespace jQuery 【发布时间】:2018-10-14 11:21:07 【问题描述】:

我拼凑了以下内容,并且工作正常:

$('#url').val(filename.slice(0, -4).toLowerCase().replace(/[^\w\s]/gi, '').replace(/\s+/g, '-'));

但它实在是太丑了。有人可以建议一种更清洁的方法吗?

发生了什么:

1) 从文件输入中删除文件名的最后 4 个字符 (.ext)

2) 转换为小写

3) 替换除空格以外的所有非字母数字字符

4) 用连字符替换空格

最终结果类似于:my-wonderful-file

谁能让它看起来不像猪耳朵?

【问题讨论】:

如果它没有损坏,请不要修复它(在合理范围内)。 哈哈,我知道,但它看起来是如此令人毛骨悚然的错误...这两个replace 真的很烦我。 【参考方案1】:

您似乎想从文件名创建slug。这是一个很好的可重用函数。

function slugify(s) 
  s = s.replace(/[^\w\s-]/g, '').trim().toLowerCase();
  s = s.replace(/[-\s]+/g, '-');
  return s;


console.log(
  slugify("Filenam §4.ext".slice(0, -4))
);

【讨论】:

谢谢,很干净的解决方案,但我只在一个页面上使用过一次,所以这个功能有点矫枉过正。【参考方案2】:
Replace all non-alphanumeric characters with whitespace
<script>

  function numericFilter() 
      var demoString = "(7564)-//[hellow467%6]-jdjd@4F%&k";
      var regex = /\W/g;
      var replacedString = demoString.replace(regex, " ");
      var str = replacedString;
      var replaced = str.split(' ').join('+');
      document.write("The Original String was : " + demoString);
      document.write("<br>The replaced String : " + replaced);
    
</script>
       <Ajax:ToolkitScriptManager runat="server" ID="ToolkitScriptManager1">
    </Ajax:ToolkitScriptManager>

    <input type="text" id="txb" onkeypress="javascript:return numericFilter()" />


</asp:Content>

【讨论】:

如果您只想提供代码作为答案,您应该向它展示一个解决 OP 问题的工作示例,或者至少在您的代码中提供解释解决方案的 cmets。我也看不到您的解决方案如何简化 OP 的代码,这正是他们所要求的。 我很欣赏这个答案,但这似乎与我的问题并不完全相关。那里有一大堆不相关的代码,老实说,如果我必须在丑陋的一个衬里和创建一个完整的函数之间做出选择,那么一个衬里就赢了。

以上是关于正则表达式 ro 转换为小写,去除非字母数字并替换空白 jQuery的主要内容,如果未能解决你的问题,请参考以下文章

js正则判断一个字符串里必须包含大写字母,小写字母,数字,特殊字符? 必须包含其中三项,求教

正则表达式:要求6-20位,只能有大小写字母和数字,并且大小写字母和数字都要有。

js正则表达式的问题:要求一个字符串只能包含数字、大小写字母、“-”和“;”,而且结尾必须是“;”

正则表达式去除中文sql

正则表达式字母大小写问题?

只能输入文字,数字,大小写英文的js正则表达式.