我已经编写了一个用于验证汇编版本格式“1.0.0.0”的regx模式。它正在使用在线regx验证器,但是当我在我的javascript中编写regx时它不起作用,因为在使用下面的代码转换regx字符串后附加/正在追加。这是什么出路?
var regx = new RegExp("(\d+\.)(\d+\.)(\d+\.)(\d)");
var value = regx.test(value);
答案 0 :(得分:1)
如果格式固定为X.X.X.X
- 由-
分隔的4位数字,则使用
var regex = /^\d+\.\d+\.\d+\.\d+$/;
regex.test("1.1.1.1"); //true
但是,如果汇编版本可能是x.x
或x.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
。
另一种选择是使用//
的简写语法。在制作文字正则表达式时,反斜杠被视为普通字符。然而!现在你需要逃避正斜杠。