我想写一个regexp,允许一些特殊的字符,如#-.
,它应至少包含一个字母。我想了解下面的事情:
/(?=^[A-Z0-9. '-]{1,45}$)/i
在这个正则表达式中?=^
的含义是什么? regexp中的子表达式是什么?
答案 0 :(得分:8)
(?=)
是一个先行者,它在字符串中向前看,看它是否匹配而没有实际捕获它
^
表示它在输入的BEGINNING处匹配(例如,使用字符串a test
,^test
将不匹配,因为它不以“test”开头,即使它包含它)
总的来说,您的表达式表示必须^
开始,$
结束您的角色组{1,45}
中存在的1-45 [A-Z0-9. '-]
项(不区分大小写{ {1}})。在这种情况下它是一个先行的事实只是意味着它不会捕获任何东西(零长度匹配)。
答案 1 :(得分:6)
?=
是一个积极的前瞻