字符串中的所有字符必须匹配正则表达式

All characters in a string must match regex

本文关键字:正则表达式 字符 字符串      更新时间:2023-09-26

我很抱歉,如果这已经出现了,但我在谷歌上找不到任何东西,给我想要的

我有一个字段,你可以写表达式:x>1, x>2||x<1, (x>1) && (x<2)等。我想要的是一个检查表达式的正则表达式,因此它只能包含某些有效字符,以防止代码注入。a.1不匹配

到目前为止,我使用的是:

expression.match('[xX<>=|0-9&().]')

但是这也返回任何包含这些字符的内容。我想要的是一个表达式,只有当所有字符匹配正则表达式中的任何字符时才返回。

在字符类和锚之后需要*+量词:

/^[xX<>=|0-9&()'s.]*$/.test(expression)
 ^                 ^^
现在,它将匹配
  • ^ -字符串
  • 起始
  • [xX<>=|0-9&'s().]* - 0个或多个(如果您使用+,一个或多个)在char类
  • 中定义的字符
  • $ - end of string.

简短的演示:

console.log(/^[xX<>=|0-9&'s().]*$/.test("a.1"));
console.log(/^[xX<>=|0-9&'s().]*$/.test("(x>1) && (x<2)"));

注意我也添加了's来匹配空白