我有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和编号。
答案 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
}