正则表达式不适用于JavaScript

时间:2018-03-28 06:01:27

标签: javascript regex

我已经编写了一个用于验证汇编版本格式“1.0.0.0”的regx模式。它正在使用在线regx验证器,但是当我在我的javascript中编写regx时它不起作用,因为在使用下面的代码转换regx字符串后附加/正在追加。这是什么出路?

 var regx = new RegExp("(\d+\.)(\d+\.)(\d+\.)(\d)");
 var value = regx.test(value);

3 个答案:

答案 0 :(得分:1)

如果格式固定为X.X.X.X - 由-分隔的4位数字,则使用

var regex = /^\d+\.\d+\.\d+\.\d+$/;
regex.test("1.1.1.1"); //true

但是,如果汇编版本可能是x.xx.x.x等 - 这是由-和任意数字分隔的数字,那么请使用< / p>

var regex = /^\d+(\.\d+)+$/;
regex.test("1.1.1.1"); //true
regex.test("1.1"); //true
regex.test("1.1.1"); //true

如果版本也可以是单个数字,那么在最终(\.\d+)之后使用*代替+

var regex = /^\d+(\.\d+)$/;
regex.test("1.1.1.1"); //true
regex.test("1.1"); //true
regex.test("1.1.1"); //true
regex.test("1"); //true

答案 1 :(得分:0)

试试这个:

var regx = /(\d+\.)(\d+\.)(\d+\.)(\d)/g;
var result = regx.test(value); // return boolean

答案 2 :(得分:0)

简而言之,您需要选择以下形式之一:

 var regx = new RegExp("(\\d+\\.)(\\d+\\.)(\\d+\\.)(\\d)");
 var regx = /(\d+\.)(\d+\.)(\d+\.)(\d)/;

使用//语法创建正则表达式与new RegExp之间的javascript存在差异。

使用new RegExp('regex here')就像你已经完成的那样,正则表达式类接受一个字符串作为输入。这对于反斜杠很重要。对于普通的javascript字符串,反斜杠\字符是控制字符。如果要在字符串中显示该字符,则需要将其转义。因此,对于要在正则表达式中显示的每个反斜杠,您需要有2倍的数量 - 一组,以便它通过您的字符串传递。例如:console.log('hello \\ backslashes');打印为hello \ backslashes

另一种选择是使用//的简写语法。在制作文字正则表达式时,反斜杠被视为普通字符。然而!现在你需要逃避正斜杠。