Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
128 views
in Technique[技术] by (71.8m points)

javascript - All characters in a string must match regex

I'm sorry if this has been up before but I can't find anythin on google that gives what I want.

I've a field where you can write expressions: x>1, x>2||x<1 (x>1) && (x<2) etc. What I want is a regex that checks the expression so it only can contain a certain valid characters to defend against code injection. a.1 should not match.

So far I'm using this:

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

But this also returns anything that contains any of these characters. What I want is a expression that only returns if all character match any of thoose in the regex.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need * or + quantifier after your character class and anchors:

/^[xX<>=|0-9&()s.]*$/.test(expression)
 ^                 ^^

Now, it will match

  • ^ - start of string
  • [xX<>=|0-9&s().]* - zero or more (if you use +, one or more) of the chars defined in the char class
  • $ - end of string.

Short demo:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...