正则表达式 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位,只能有大小写字母和数字,并且大小写字母和数字都要有。