繁体   English   中英

javascript 特殊字符的正则表达式

[英]javascript regex for special characters

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

我似乎无法掌握它。

使用regex = /a-zA-Z0-9/g and 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

一种匹配特殊字符的更简洁的方法:

/\W|_/g

\\W匹配任何不是单词字符(字母数字和下划线)的字符。

下划线被视为特殊字符,因此添加布尔值以匹配特殊字符或 _

有什么不同?

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

/a-zA-Z0-9/确实表示这 9 个字符的文字序列。

.!@#$%^&*()_+-=中的哪些字符需要转义?

在字符类中,只有减号(如果不是结尾)和抑扬符(如果在开头)。 在字符类之外, .$^*+()具有特殊含义,需要进行转义以匹配字面意思。

只允许a-zA-Z0-9字符和.!@#$%^&*()_+-=

然后将它们放在一个字符类中,让它们重复并要求通过锚点将整个字符串与它们匹配:

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

您可以通过测试无效字符来具体说明。 对于非字母数字和空格的任何内容,这将返回 true:

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

这个怎么样:-

var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,}$/;

它将允许至少 6 个字符,包括数字、字母和特殊字符

上面写的正则表达式存在一些问题。

这完美地工作。

^[a-zA-Z\d\-_.,\s]+$

此处仅包含允许的特殊字符,并且可以在逗号后扩展。

完整的特殊字符集:

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

回答你的问题:

var regular_expression = /^[A-Za-z0-9\!\@\#\$\%\^\&\*\)\(+\=\._-]+$/g

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

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

这个正则表达式很适合我验证密码:

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

此特殊字符列表(包括空格和标点符号)取自此处: https : //www.owasp.org/index.php/Password_special_characters 它稍微改变了一点,导致反斜杠 ('\\') 和右括号 (']') 必须被转义,才能使正则表达式正常工作。 这就是添加两个额外反斜杠字符的原因。

// Regex for special symbols

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

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

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

此函数只允许使用字母,包括小写和大写以及 - 和 ' 字符。 可以帮助你建立你的。

您可以使用它来查找和替换任何特殊字符,例如 Worpress 的 slug

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

好吧,这在 React Native 中对我有用:) 这是我对特殊字符列表的参考: https : //owasp.org/www-community/password-special-characters

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

如果我们只需要允许数字和符号(- 和。)那么我们可以使用以下模式

const filterParams = {
    allowedCharPattern: '\\d\\-\\.', // declaring regex pattern
    numberParser: text => {
        return text == null ? null : parseFloat(text)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM