Regex creado a través de RegExp (myString) no funciona (barras invertidas)

Por lo tanto, estoy tratando de escribir una expresión regular que coincida con todos los números. Aquí está esa expresión regular:

/\b[\d \.]+\b/g 

Y trato de usarlo en la cadena:

 100 two 100 

Y todo funciona bien; coincide con los dos números.

Pero quiero reescribir la expresión regular en la forma:

 new RegExp(pattern,modifiers) 

Porque creo que se ve más claro. Así que lo escribo así:

 new RegExp('\b[\d \.]+\b','g') 

Pero ahora no coincidirá con la cadena de prueba anterior. He intentado todo, pero simplemente no puedo hacer que funcione. ¿Qué estoy haciendo mal?

Por favor ignora mi voto cercano. Tu problema es que la barra invertida en una cadena tiene un significado especial; si quieres una barra invertida en tu expresión regular, primero necesitas obtener barras invertidas literales en la cadena que se pasa a la expresión regular:

 new RegExp('\\b[\\d \\.]+\\b','g'); 

Tenga en cuenta que esta es una expresión regular bastante mala (permisiva), ya que coincidirá con ". . . " Como un “número”, o "1 1...3 42" . Mejor podría ser:

 /-?\d+(?:\.\d+)?\b/ 

Tenga en cuenta que esto coincide con cosas extrañas como 0000.3 y tampoco coincide:

  • Leading +
  • Notación científica, p. Ej. 1.3e7
  • Falta el dígito inicial, por ejemplo, .4

También tenga en cuenta que usar el constructor RegExp es (marginalmente) más lento y ciertamente menos idiomático que usar un literal RegExp. Usarlo es solo una buena idea cuando necesitas construir tu RegExp a partir de las cadenas suministradas. La mayoría de las personas con más que familiaridad pasajera con JavaScript encontrarán la notación /.../ totalmente clara.