正则表达式PHP和HTML模式

正则表达式PHP和HTML模式,php,html,Php,Html,目标是将与此PHP代码正则表达式相同的正则表达式放入HTML模式属性中。 这和正则表达式的模式是一样的 pattern="[A-Z \'.-]{2,20}$" 这个 if (preg_match ('/^[A-Z \'.-]{2,20}$/i', $trimmed['first_name'])) { ... PHP使用i修饰符,使其不区分大小写。无法在模式中指定此修饰符,因此需要同时编写大写和小写A-Za-z 没有必要在HTML中转义”;这只在PHP中需要,因为它被用来引用字符串本身 HTM

目标是将与此PHP代码正则表达式相同的正则表达式放入HTML模式属性中。 这和正则表达式的模式是一样的

pattern="[A-Z \'.-]{2,20}$"
这个

if (preg_match ('/^[A-Z \'.-]{2,20}$/i', $trimmed['first_name'])) {
...

PHP使用
i
修饰符,使其不区分大小写。无法在模式中指定此修饰符,因此需要同时编写大写和小写
A-Za-z

没有必要在HTML中转义
;这只在PHP中需要,因为它被用来引用字符串本身

HTML属性中不需要
$
。模式将自动定位在输入的开始和结束处

所以你想要的是:



您在
PHP
中使用的表达式使用了
不敏感
regex标志,因为表达式末尾有
/i
。正因为如此,它才不会关心这个案子。pattern属性中的表达式将与大小写有关。两个使其相同,您可以执行以下操作:

不区分大小写:

 HTML 
 [A-Z a-z \'.-]{2,20}$

 PHP
 /^[A-Z \'.-]{2,20}$/i
区分大小写:

 HTML 
 [A-Z \'.-]{2,20}$

 PHP
 /^[A-Z \'.-]{2,20}$/

您应该使用此正则表达式获得相同的结果:
pattern=“[a-zA-Z.-]{2,20}$”

什么是“HTML模式”?@tadman HTML允许在
元素中使用
模式
属性,浏览器将自动检查输入的值是否与regexp匹配。我能找出的唯一区别是,在PHP模式上标记字符串的开头(使用^),而在HTML模式上未定义该模式的开头。@LucianoGiordano HTML会自动锚定该模式,你不需要明确地写出来。@Barmar如果这个问题是关于这个问题的,那是有意义的,但措辞还很不清楚。这正是我刚才在评论中解释的。@LucianoGiordano我在写答案时,你正在评论。