【问题标题】:Regular Expression to accept only 0,1,(,),|,&正则表达式只接受 0,1,(,),|,&
【发布时间】:2017-12-09 01:14:26
【问题描述】:

我正在尝试创建一个字符串中仅包含少于 6 个字符的正则表达式

0,1,(,),|,&

我想出了这个正则表达式

^[0-1\|()\&]$

但即使输入有效的字符串,它似乎也会失败。如下

const inputStr = "(0&(1&(1|0))";
const validateStr = new RegExp("^[0-1\|\(\)\&]$");
const isValid = validateStr.test(inputStr);

上面需要返回true,但是isValid的输出是false。请让我知道我哪里做错了。

【问题讨论】:

  • 这个? const validateStr = /^[01|&()]+$/i;
  • @ChrisG 为什么不作为答案发布?
  • @IgorSoloydenko 因为其他人极不可能有同样的问题,所以这个问题的半衰期可能会有点短。
  • 这似乎有效!谢谢@ChrisG。但是为什么不没有新的 RegExp... 为什么不转义像 |&() 之类的特殊字符
  • @gregchap JS 可识别正则表达式,您无需转义由[ ] 分隔的字符集中的字符。

标签: javascript regex


【解决方案1】:

你需要在你的字符集后面加一个加号来搜索整个字符串!

const inputStr = "(0&(1&(1|0))";
const validateStr = new RegExp(/^[0-1()|&]+$/);
const isValid = validateStr.test(inputStr);
console.log(isValid);

【讨论】:

  • 感谢您的回复!但是@ChrisG 已经在上面的 cmets 中回答了。感谢您的帮助!
  • @greg chap 没问题
猜你喜欢
  • 1970-01-01
  • 2018-05-28
  • 2023-03-24
  • 1970-01-01
  • 2010-12-19
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多