下面的片段是从一本书上的HTML5:是否需要在HTML5中使用正则表达式的Parathensis?
<label for="zip">US Zip code</label>
<input id="zip" name="zip" pattern="[\d]{5}(-[\d]{4})">
我觉得Parathensis在[\d]{5}(-[\d]{4})
是多余的,这意味着: [\d]{5}(-[\d]{4})
等于[\d]{5}-[\d]{4}
是不是?
下面的片段是从一本书上的HTML5:是否需要在HTML5中使用正则表达式的Parathensis?
<label for="zip">US Zip code</label>
<input id="zip" name="zip" pattern="[\d]{5}(-[\d]{4})">
我觉得Parathensis在[\d]{5}(-[\d]{4})
是多余的,这意味着: [\d]{5}(-[\d]{4})
等于[\d]{5}-[\d]{4}
是不是?
首先,字符你的模式中的班级是相当多余的,可能会导致误解人物类的工作方式而引发的进一步问题。
经验法则如果您不需要使用某些东西。因此,将模式简化为\d{5}(-\d{4})
。
一对类似于你的模式的未转义的括号用于group and capture(将一个子匹配放入为每个这样的组分配的内存缓冲区中)。
所以,\d{5}(-\d{4})
匹配从字符串的开头(因为图案属性的正则表达式被锚定在两侧^(?:
和)$
默认情况下)5位数字,然后匹配并放置连字符和4位数字在字符串的末尾进入存储器缓冲器#1 ,从而创建可以用backreference来引用的组。
模式内的反向引用以\n
语法指定,其中n
是捕获组ID。因此,要匹配先前以相同模式匹配的文本,我们可以使用这些反向引用。当您需要检查字符串中的重复值时,它非常有用。再说了,你要验证开头的字符串,结束同为2个数字:pattern="(\d{2}).*?\1"
:
<form>
<input pattern="(\d{2}).*?\1" message="2 digits at the start and end should be identical!" />
<input type="submit"/>
</form>
此外,您可以利用分组(包括捕捉(...)
和非捕获(?:...)
)匹配几次出现的特定序列。说,你想匹配abc
+ 3位数字的2个序列。那么你会使用(abc\d{3}){2}
。
圆括号用于捕获组,如果你不使用捕捉组,它的确定将其删除
可以肯定的,我想在这个网站http://www.regexr.com/
直到你想捕捉它,它的无用 – rock321987
括号是正则表达式中的模式。该模式将取代另一个内容。所以它不是数学运算符,它是一种有用的技术。 –
对于这个问题,角色类也是如此。看来这本书的作者只是喜欢括号。该模式可以简化为'\ d {5} - \ d {4}'(大括号是这里唯一有用的)。 – BoltClock