regex 匹配正则表达式中的特殊字符和字母

nukf8bse  于 2023-02-17  发布在  其他
关注(0)|答案(7)|浏览(198)

我尝试验证一个字符串,它应该只包含字母、数字和特殊字符&-._。为此,我尝试使用正则表达式。

var pattern = /[a-zA-Z0-9&_\.-]/
var qry = 'abc&*';
if(qry.match(pattern)) {
    alert('valid');
}
else{
    alert('invalid');
}

在使用上面的代码时,字符串abc&*是有效的。但是我的要求是显示这个字符串是无效的。例如,当一个字符而不是一个字母,一个数字或特殊字符&-._出现时,这个字符串应该被评估为无效。

cetgtptt

cetgtptt1#

将它们添加到允许的字符中,但需要对其中一些字符进行转义,例如-]/\

var pattern = /^[a-zA-Z0-9!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]*$/

这样,您就可以删除要禁用的任何单个字符。
此外,您还希望包括字符串placemarker ^和$的开始和结束

    • 更新日期:**

正如elclanrs所理解的(我们其他人最初并不理解),模式中需要允许的 * 唯一 * 特殊字符是&-._

/^[\w&.\-]+$/

[\w]与[a-zA-Z0 - 9_]相同
虽然破折号在列表的开头或结尾时不需要转义,但我更喜欢在添加其他字符时使用它。另外,+表示您至少需要列表中的一个字符。如果零是可以的(即空值),则用 * 代替:

/^[\w&.\-]*$/
mpgws1up

mpgws1up2#

那么,为什么不直接将它们添加到现有的角色类中呢?

var pattern = /[a-zA-Z0-9&._-]/

如果你需要检查一个字符串是否只由这些字符组成,你还必须锚定表达式:

var pattern = /^[a-zA-Z0-9&._-]+$/

添加的^$分别匹配字符串的开头和结尾。
测试字母、数字或下划线可以用\w来完成,它可以缩短你的表达式:

var pattern = /^[\w&.-]+$/

正如Nathan的评论中提到的,如果你不使用.match()的结果(它返回一个数组,其中包含匹配的内容),最好使用RegExp.test(),它返回一个简单的布尔值:

if (pattern.test(qry)) {
    // qry is non-empty and only contains letters, numbers or special characters.
}
    • 更新2**

如果我误解了这个问题,下面将检查是否满足所有三个单独的条件。

if (/[a-zA-Z]/.test(qry) && /[0-9]/.test(qry) && /[&._-]/.test(qry)) {
   // qry contains at least one letter, one number and one special character
}
ars1skjm

ars1skjm3#

试试这个正则表达式:

/^[\w&.-]+$/

您也可以使用test

if ( pattern.test( qry ) ) {
  // valid
}
vsnjm48y

vsnjm48y4#

let pattern = /^(?=.*[0-9])(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9!@#$%^&*]{6,16}$/;

//following will give you the result as true(if the password contains Capital, small letter, number and special character) or false based on the string format

let reee =pattern .test("helLo123@");   //true as it contains all the above
1tu0hz3e

1tu0hz3e5#

我试了一大堆这样的方法,但没有一个对我所有的测试都有效。所以我发现了这个:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,15}$

来自此来源:https://www.w3resource.com/javascript/form/password-validation.php

xe55xuns

xe55xuns6#

试试这个RegEx:匹配我们在段落和字母表中使用的特殊字符

Javascript : /^[a-zA-Z]+(([\'\,\.\-_ \/)(:][a-zA-Z_ ])?[a-zA-Z_ .]*)*$/.test(str)

                .test(str) returns boolean value if matched true and not matched false

            c# :  ^[a-zA-Z]+(([\'\,\.\-_ \/)(:][a-zA-Z_ ])?[a-zA-Z_ .]*)*$
0dxa2lsx

0dxa2lsx7#

在这里您可以匹配特殊字符:

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

console.log(containsSpecialChars('hello!')); // 👉️ true
console.log(containsSpecialChars('abc')); // 👉️ false
console.log(containsSpecialChars('one two')); // 👉️ false

相关问题