RegEx用于识别guid或数字

时间:2018-04-20 04:37:21

标签: javascript regex match guid

我有guid的正则表达式:

  

/ ^ [0-9A-F] {8} - [0-9A-F] {4} - [1-5] [0-9A-F] {3} - [89ab] [0-9A -f] {3} - [0-9A-F] {12} $ / I

正则表达式匹配一个数字:

  

/ ^ [0-9] * $

但我需要匹配一个guid或一个数字。有没有办法匹配单个正则表达式。或者我应该单独检查guid和编号。

3 个答案:

答案 0 :(得分:2)

在正则表达式中使用|来匹配之前或之后的内容:



const re = /^([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})|[0-9]+$/i;
console.log('11111111-1111-1111-8111-111111111111'.match(re)[0]);
console.log('5555'.match(re)[0]);




答案 1 :(得分:2)

你可以使用|两个正则表达式之间的运算符。你可以按照下面给出的那样使用它们

/(^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i) | (^[0-9]*$)/

答案 2 :(得分:0)

是的,有很多方法可以解决这个问题。一种是在if语句中对比赛进行OR:

var reg1 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
var reg2 = /^[0-9]*$/;
var text = " ... ";

if (reg1.test(text) || reg2.test(text)) {
  // do your stuff here
}

另一种方法是ORing in the RegExp本身:

var regex = /(^[0-9]*)|^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
var text = " ... ";

if (regex.test(text)) {
  // do your stuff here
}