如何在Javascript中从字符串的开头和结尾修剪所有非字母数字字符?

时间:2013-08-15 10:23:13

标签: javascript regex

我想通过从开头和结尾删除所有非字母数字字符来清理一些字符串。

它应该适用于这些字符串:

)&*@^#*^#&^%$text-is.clean,--^2*%#**)(#&^ --->> text-is.clean,--^2

-+~!@#$%,.-"^&example-text@is.clean,--^#*%#**)(#&^ --->> example-text@is.clean

我有这个正则表达式,它将它们从整个字符串中删除:

val.replace(/[^a-zA-Z0-9]/g,'')

如何将其更改为仅从字符串的开头和结尾删除?

4 个答案:

答案 0 :(得分:9)

修改当前的 RegExp 以使用^$指定字符串的开头或结尾,并使其变得贪婪。然后,您可以使用OR |链接两者。

val.replace(/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g, '');

这可以简化为a-z,所有字母都带有i标记,数字为\d

val.replace(/^[^a-z\d]*|[^a-z\d]*$/gi, '');

答案 1 :(得分:4)

您需要使用锚点 - ^$。而且,您需要一个量词 - *

val.replace(/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g,'')

答案 2 :(得分:4)

使用锚点匹配字符串的开头和结尾:

val.replace(/^[^A-Z0-9]+|[^A-Z0-9]+$/ig, '')

答案 3 :(得分:1)

使用锚点^$来匹配字符串中第一个字符之前和最后一个字符之后的位置。

val.replace(/(^[^A-Za-z0-9]*)|([^A-Za-z0-9]*$)/g, ''); 

您还可以使用\W缩短代码,这意味着非字母数字字符,[^a-zA-Z0-9_]的快捷方式,以防您想要保留下划线。

val.replace(/(^\W*)|(\W*$)/g, '');