Javascript regex question mark (?) Not detect

Hi everyone, I tried to create regexwith a random value.

var data = "demo purpose?";  **OR**  var data = "demo purpose";
var sentence = "can I put these app as demo purpose?";
var re = new RegExp("\\b(" + data + ")\\b", "g");
console.log(sentence.match(re));   // output ["demo purpose"]

The variable datahas two different meanings demo purpose?and demo purposewith a question mark. Both consoles are the same as any. Give me a clue what should I do in this case.

- Thank you

+4
source share
3 answers

you need to exit ?(i.e. write \\?), or it will be interpreted as a quantifier in regex .

, \\b , char, demo purpose?, sentence.match(new RegExp("\\b(demo purpose\\?)\\b", "g")) null.

, Math.random. 0 1 ( Math.floor) .

+10

JS , , (, ..).

escape - MDN:

function escapeRegExp(string){
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}

, \b , ? , . , \b. , , (?:^|\W) (?!\w) exec, match, 1.

, :

function escapeRegExp(string){
  return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
}

var data = "demo purpose?";
var sentence = "can I put these app as demo purpose?";
var re = new RegExp("(?:^|\\W)(" + escapeRegExp(data) + ")(?!\\w)", "g");
while ((m = re.exec(sentence)) !== null) {
   console.log(m[1]);   // output ["demo purpose?"]
}
Hide result

emo purpose?, , .

+2

var data = "demo purpose?"; // **OR**  var data = "demo purpose";
var sentence = "can I put these app as demo purpose?";
var re = new RegExp(/demo purpose\?/, "g");
console.log(sentence.match(re));   // output ["demo purpose?"]

return [ "demo purpose?" ], RegExp("xxx", "g"); RegExp(/xxx/, "g");

var data = /demo purpose\?/; // **OR**  var data = "demo purpose";
var sentence = "can I put these app as demo purpose?";
var re = new RegExp(data, "g");
console.log(sentence.match(re));   

0

Source: https://habr.com/ru/post/1605737/


All Articles