用于识别 guid 或数字的正则表达式
RegEx to identify guid or a number
我有 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 和 number。
是的,有很多方法可以做到这一点。一种是对 if
语句中的匹配项进行或运算:
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
}
在正则表达式中使用 |
来匹配之前或之后的内容:
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]);
您可以使用 |两个正则表达式之间的运算符。您可以按以下方式使用它们
/(^[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 的正则表达式:
/^[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 和 number。
是的,有很多方法可以做到这一点。一种是对 if
语句中的匹配项进行或运算:
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
}
在正则表达式中使用 |
来匹配之前或之后的内容:
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]);
您可以使用 |两个正则表达式之间的运算符。您可以按以下方式使用它们
/(^[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]*$)/