javascript - 只允许具有特定字符正则表达式的特定模式 - javascript

标签 javascript regex

我正在编写一个方法来检查输入是否匹配

>=n, >n, <n, <=n or n..n.

正则表达式一直是令人困惑的东西。我觉得这是一个很好的例子,可以更好地理解它。

到目前为止我只是检查它是否有那些字符

const text = '>2';
const regex = /^[<>=.0-9]|g/i;
console.log(regex.test(text));

如何创建只允许那些特定模式/量词的正则表达式?例如。 >5 有效但 5> 无效。

这些类型的事物背后的术语是什么?

最佳答案

你必须注意顺序并且更准确:

^(?:>|<|>=|<=)(?:[1-9]\d*|0)$
  • (?:>|<|>=|<=)是有效运算符的集合
  • (?:[1-9][0-9]*|0)是不带前导零的数字

所以完整 regex变量将被初始化为:

regex = /^(?:>|<|>=|<=)(?:[1-9]\d*|0)$|g/i;

您已包含以匹配 n..n作为备选。给你:

^((>|<|>=|<=)|([1-9]\d*|0)\.\.)([1-9]\d*|0)$
  • \.匹配.字面上的点,必须转义

测试它:

regex = /^((>|<|>=|<=)|([1-9]\d*|0)\.\.)([1-9]\d*|0)$|g/i;

array = new Array();

array[0] = ">2";    // valid
array[1] = ">0";    // valid
array[2] = "2..3"   // valid
array[3] = "=2";    // invalid
array[4] = ">01";   // invalid
array[5] = "2>";    // invalid

array.forEach(item => console.log(regex.test(item)));


如果您不介意前导零,只需使用:

^((>|<|>=|<=)|\d*\.\.)\d*$

关于javascript - 只允许具有特定字符正则表达式的特定模式 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53528207/

相关文章:

java - 带有 "or"运算符的正则表达式多个字符串

javascript - extjs中的ajax请求总是执行成功

Java正则表达式热匹配元标签内容属性值

javascript - 将 JSON 数据从 C# 传递到独立的 Javascript 文件(无 Web 服务器)

javascript - 期待这样或那样,如何在单元测试中包含 OR

php - 如何将 Unicode 文本 block 转换为 UTF-8 (HEX) 代码点?

java - 在 Java String.split() 方法中使用转义字符处理定界符

javascript - 使用正则表达式从url中提取参数值

javascript - React map 更改索引号并破坏条件渲染

javascript - gulp:如何在不刷新的情况下更新浏览器(仅适用于 css 更改)