特殊字符的javascript正则表达式

特殊字符的javascript正则表达式,javascript,regex,Javascript,Regex,我正在尝试为密码字段创建验证,该字段仅允许a-zA-Z0-9字符和。@#$%^&*()uU9+-= 我似乎弄不懂它的窍门 使用regex=/a-zA-Z0-9/g和regex=/[a-zA-Z0-9]/时有什么区别?哪些字符来自。@$%^&*()是否需要转义+-= 到目前为止,我一直在尝试: var regex = /a-zA-Z0-9!@#\$%\^\&*\)\(+=._-/g 但没有成功 var regex = /^[a-zA-Z0-9!@#\$%\^\&*\)\(+=._

我正在尝试为密码字段创建验证,该字段仅允许
a-zA-Z0-9
字符和
。@#$%^&*()uU9+-=

我似乎弄不懂它的窍门

使用
regex=/a-zA-Z0-9/g和regex=/[a-zA-Z0-9]/
时有什么区别?哪些字符来自
。@$%^&*()是否需要转义+-=

到目前为止,我一直在尝试:

var regex = /a-zA-Z0-9!@#\$%\^\&*\)\(+=._-/g
但没有成功

var regex = /^[a-zA-Z0-9!@#\$%\^\&*\)\(+=._-]+$/g
应该有用

也可能需要最小长度,即6个字符

var regex = /^[a-zA-Z0-9!@#\$%\^\&*\)\(+=._-]{6,}$/g
这个怎么样:-

var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,}$/;
它将允许至少6个字符,包括数字、字母和特殊字符

var regex = /^[a-zA-Z0-9!@#\$%\^\&*\)\(+=._-]{6,}$/g
有什么区别

/[a-zA-Z0-9]/
是与类中的一个字符匹配的。它由三个范围组成

/a-zA-Z0-9/
表示这9个字符的文字顺序

哪些字符来自
。@#$%^&*()是否需要转义+-=

在字符类中,只有减号(如果不在末尾)和扬抑符(如果在开头)。在charclass之外,
$^*+()
有一个特殊的含义,需要转义以匹配字面意思

仅允许
a-zA-Z0-9
字符和
。@#$%^&*()uU9+-=

然后将它们放入一个字符类,让它们和require通过以下方式匹配整个字符串:


上面写的正则表达式有一些问题

这很好用

^[a-zA-Z\d\-_.,\s]+$
此处仅包含允许的特殊字符,并且可以在逗号后进行扩展。

//特殊符号的正则表达式
// Regex for special symbols

var regex_symbols= /[-!$%^&*()_+|~=`{}\[\]:\/;<>?,.@#]/;
var regex_symbols=/[-!$%^&*();
一种与特殊字符匹配的SLEEKER方法:

/\W|_/g
\W匹配任何非单词字符的字符(字母数字和下划线)

下划线被认为是一个特殊字符,所以
添加布尔值以匹配特殊字符或

这是实际的仅正则表达式匹配:

/[-!$%^&*()_+|~=`{}[:;<>?,.@#\]]/g
/[-!$%^&*()+| ~=`{}[:;?,.@\]/g

用于至少8个字符、一个字母、一个数字和一个特殊字符的正则表达式:

/^(?=.*[A-Za-z])(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{8,}$/

这个正则表达式对于我验证密码非常有效:

/[ !"#$%&'()*+,-./:;<=>?@[\\\]^_`{|}~]/
/[!”{$%&'()*+,-./:;?@[\\\]^{\\}]/

此特殊字符列表(包括空格和标点符号)取自此处:。此列表稍有更改,导致反斜杠(“\”)和右括号(“]”)必须对正则表达式进行转义才能正常工作。这就是为什么添加了两个额外的反斜杠字符。

您可以通过测试无效字符来确定是否为特定字符。对于非字母数字和空格的任何内容,这将返回true:

var specials = /[^A-Za-z 0-9]/g;
return specials.test(input.val());

全套特殊字符:

/[\!\@\#\$\%\^\&\*\)\(\+\=\.\<\>\{\}\[\]\:\;\'\"\|\~\`\_\-]/g

此函数仅允许字母表,包括小写和大写以及-和字符。可能有助于您构建自己的字母表。

您可以使用此函数查找和替换任何特殊字符,如Worpress的slug中的字符

const regex = /[`~!@#$%^&*()-_+{}[\]\\|,.//?;':"]/g
let slug = label.replace(regex, '')


这难道不允许括号内的每个字符吗?(包括我们钟爱的字母表?)哦,对不起,我把regex中的元字符弄混了。请忽略我之前的评论。逗号失败不是特殊字符吗?
var regex=/^[a-zA-Z0-9!@\$%\^\&*\(+=.\-]+$/g;regex.test('happy'))
给出了错误的引用为什么会有最大长度?@11684-可能是因为它最终需要存储在数据库中的一个固定大小的条目中?好吧,我们不知道这一点,但是如果,那么我会问为什么一开始就有这么低的固定大小的条目@EdHeal@11684-我想拉胡尔就是这样做的。此外,自动取款机的密码只有4个数字。银行似乎对此很满意。6个字符更难猜测!@rahul各种特殊字符,如[]{}/”'丢失。请停止。您可以使用的密码字符不应该有任何限制。最大的限制应该是必须显示的字符类型的配额。但是如果我想要像
ag90:“jNn;fsi./
,为什么不允许这样做?@cHao可能会给出一个正则表达式,然后…;)@贾米巴罗:
/^(.*\W){3}.*$/
至少需要3个非单词字符…但这不能回答问题。:)谢谢!wordpress\u designer。您的解决方案对我有效。我只需要脚本中的字符。请注意:这也将匹配任何非拉丁字符。在这种情况下,像
ñ
这样的字符也被视为特殊字符,因此请小心我喜欢这个简单而完美的问题似乎集中在处理字符
。@$%^&*()_+-=
。这回答了问题的这一部分吗?我还没有尝试过这些字符,但在正则表达式的结构中,处理这些字符所要做的就是将它们放入表达式中。我猜类似于/[^a-zA-Z-\-\\\'。!@$%\^()\+]/g、 您所要做的就是对表示正则表达式中特殊函数的字符进行转义,如$^()
function nameInput(limitField)
{
//LimitFile here is a text input and this function is passed to the text 
onInput
var inputString = limitField.value;
// here we capture all illegal chars by adding a ^ inside the class,
// And overwrite them with "".
var newStr = inputString.replace(/[^a-zA-Z-\-\']/g, "");
limitField.value = newStr;
}
const regex = /[`~!@#$%^&*()-_+{}[\]\\|,.//?;':"]/g
let slug = label.replace(regex, '')