我正在编写一个方法来检查输入是否匹配
>=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/