如何创建正则表达式以接受字母数字值和破折号,下划线和波浪号特殊字符
我试过这个
var regex = /^[a-zA-Z0-9\~\_\-]*$/;
它适用于破折号和下划线但不接受波浪号角色。任何人都可以帮忙。
答案 0 :(得分:0)
有几种方法,但有一种方式:
var test = "alphanumeric -dash- _underscore_ ~tilde~";
var regex = /[\w~_-]/gi;
// Run it:
test.match(regex);
// Outputs:
(37) ["a", "l", "p", "h", "a", "n", "u", "m", "e", "r", "i", "c", "-", "d", "a", "s", "h", "-", "_", "u", "n", "d", "e", "r", "s", "c", "o", "r", "e", "_", "~", "t", "i", "l", "d", "e", "~"]
注意:\w
选择任何'字'本地字母表中的字符(区域设置)。 `
我想你知道方括号[]
定义了一个字符类。
您的glob *
将匹配字符零次或多次 - 您可能希望更改+
以匹配多个匹配项,也许圆括号{{1}捕捉比赛。
/ g ()
/ i search globally in the string (the whole string, not just the first match). The
a-zA-Z switch is to ignore character case (so need for
/ w`。
答案 1 :(得分:0)
var regex = /[a-zA-Z0-9\~\_\-]*/g;
你可以抛弃^和$。而且你不必在JS AFAIK中逃避〜_和 - 。
正则表达式工作正常,无论如何,请在此处查看:
你确定你的字符串是否正确以及你正确使用正则表达式(作为正确函数的参数)?
编辑:
基于评论(ty人),我意识到提供一个更短的正则表达式做同样的是一个不错的主意。这是我提出的最短的一个:
[\w_~-]+
如果不接受空字符串
[\w_~-]*
如果空字符串也可以接受