匹配时间
以24小时制为例。
要求匹配:
23:59
02:07
分析:
共4位数字,第一位数字可以为[0-2]。
当第1位为2时,第2位可以为[0-3],其他情况时,第2位为[0-9]。
第3位数字为[0-5],第4位为[0-9]
正则如下:
varregex = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/;console.log( regex.test("23:59") ); console.log( regex.test("02:07") ); // => true// => true复制代码
如果也要求匹配7:9,也就是说时分前面的0可以省略。
此时正则变成:
varregex = /^(0?[0-9]|1[0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9])$/;console.log( regex.test("23:59") ); console.log( regex.test("02:07") ); console.log( regex.test("7:9") ); // => true// => true// => true复制代码
域独立查询
由于量词的语义使得它们量化在模式中域上所有元组上,如果假定了另一个模式则对一个特定数据库的一个查询可能返回不同结果。例如考虑两个模式S1= (D1,R,h) 和S2= (D2,R,h),带有域D1= { 1 },D2= { 1, 2 },关系名字R= { "r1" } 和表头h= { ("r1", {"a"}) }。两个模式有一个公共实例:
db= { ( "r1", { ("a", 1) } ) }
如果我们考虑如下查询表达式
{t: {a} |t.a =t.a }
在它在db上的结果要么是在S1下的 { (a: 1) } 要么是在S2下的 { (a: 1), (a: 2) }。如果我们采用域为无限集合,则查询的结果也会是无限的,这是很明显的。要解决这些问题我们将把我们的注意力限制于“域独立”的那些查询,就是说,对一个数据库的查询在它的所有模式下都返回同样的结果。
这些查询的一个有价值的性质是如果我们假定元组变量取值于所谓的这个数据库“活跃域”上的元组,它是在数据库或在查询表达式中的至少一个元组中出现的域的子集,则查询表达式的语言不变。事实上,在很多元组演算的定义中,量词语义就是这么定义的,这使得定义的所有查询都是域独立的。
Copyright 2015-2022 财富赢家网版权所有 联系邮箱:920 891 263@qq.com