正则表达式 - 我希望我的字符串以2个特殊字符结尾

时间:2017-04-06 12:09:16

标签: javascript regex

我一直在尝试制作以2个特殊字符结尾的正则表达式,但我无法找到解决方案。这是我尝试过的,但似乎它没有用。

/.[!@#$%^&*]{2}+$/;

提前致谢。

2 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

^.*[!@#$%^&*]{2}$

Demo



const regex = /^.*[!@#$%^&*]{2}$/;
const str = `abc@#\$`;
let m;

if(str.match(regex)) {
console.log("matched");
}
else
  console.log("not matched");




答案 1 :(得分:0)

/.[!@#$%^&*]{2}+$/正则表达式匹配

  • . - 除了换行符之外的任何字符
  • [!@#$%^&*]{2}+ - 在PCRE / Boost / Java / Oniguruma和支持占有量词的其他正则表达式引擎中,它恰好匹配定义集合中的2辆汽车,但在JS中,它会导致“无需重复”错误
  • $ - 字符串结束。

要匹配从定义的集合中以2次出现的字符结尾的任何字符串,您需要删除.+并使用

console.log(/[!@#$%^&*]{2}$/.test("#@"))

或者,如果这两个字符不能以第三个字符开头:

console.log(/(?:^|[^!@#$%^&*])[!@#$%^&*]{2}$/.test("#@"))
//           ^^^^^^^^^^^^^^^^^         

(?:^|[^!@#$%^&*])非捕获组匹配字符串的开头(^)或(|)除!@,{{之外的任何字符。 1}},#$%^&*