创建正则表达式以接受字母数字值和破折号,下划线和波浪号特殊字符

时间:2017-10-11 10:50:00

标签: javascript regex

如何创建正则表达式以接受字母数字值和破折号,下划线和波浪号特殊字符

我试过这个

var regex = /^[a-zA-Z0-9\~\_\-]*$/;

它适用于破折号和下划线但不接受波浪号角色。任何人都可以帮忙。

2 个答案:

答案 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中逃避〜_和 - 。

正则表达式工作正常,无论如何,请在此处查看:

regex playground

你确定你的字符串是否正确以及你正确使用正则表达式(作为正确函数的参数)?

编辑:

基于评论(ty人),我意识到提供一个更短的正则表达式做同样的是一个不错的主意。这是我提出的最短的一个:

[\w_~-]+如果不接受空字符串

[\w_~-]*如果空字符串也可以接受