Javascript正则表达式:匹配地址(街道的编号和名称)
我想在Javascript中使用正则表达式来匹配一个字符串,该字符串包含第一位的数字,然后是街道名称,例如: 圣路易斯54街 我尝试的正则表达式是这样的:Javascript正则表达式:匹配地址(街道的编号和名称),javascript,regex,Javascript,Regex,我想在Javascript中使用正则表达式来匹配一个字符串,该字符串包含第一位的数字,然后是街道名称,例如: 圣路易斯54街 我尝试的正则表达式是这样的:var res=/[0-9]\s[A-Z]\s[A-Z-]/.test(“8街圣路易斯”) 但它返回错误 有什么想法吗?问题: [A-Z]:它将只匹配一个字母表,因此请使用*或+ 您的示例大小写包括小写字母,但您的正则表达式只查找大写字母,因此请使用[a-zA-Z] 所以使用^\d+\s[a-zA-Z]+(\s[a-zA-Z-]*)?$ ^\d
var res=/[0-9]\s[A-Z]\s[A-Z-]/.test(“8街圣路易斯”)代码>
但它返回错误
有什么想法吗?问题:
[A-Z]
:它将只匹配一个字母表,因此请使用*
或+
您的示例大小写包括小写字母,但您的正则表达式只查找大写字母,因此请使用[a-zA-Z]
所以使用^\d+\s[a-zA-Z]+(\s[a-zA-Z-]*)?$
^\d+
:以一个或多个数字开头
\s[a-zA-Z]+
:空格然后是一个或多个字母
(\s[a-zA-Z-]*)?
:?
零或一个、空格和零或多个字母表的匹配,以及-
,$
字符串的平均结束匹配
console.log(/^\d+\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8 street Saint Louis'));
console.log(/^\d++\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8街');
console.log(/^\d++\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8748 street Saint Louis'));
//-----------------------------------------------------------
console.log(/^\d{1,3}\s[a-zA-Z]+(\s[a-zA-Z-]*)?$/.test('8748 street Saint Louis')代码>你忘了应用你的正则表达式也不区分大小写-添加i
flagOk谢谢,我以这个/[0-9]{1,3}\s[A-Z]*\s[A-Z-]*/i.test(“圣路易斯街8748号”)但是当我用{1,3}限制数字的数量时,它怎么会返回true呢?因为你没有锚定它;它是从7
@ThisIsMe开始匹配的,因为[0-9]{1,3}
将从748
开始匹配,所以使用开始锚定^[0-9]
,我不知道你仍然有疑问,所以如果你有疑问,请尝试将你的疑问添加到post中,以澄清你的评论“和-
结尾”在图案中间的连字符表示范围,<代码> A z < /代码>是“A通Z”。在结尾,这意味着连字符本身应该是匹配字符的一部分。@JamesCurran由于更加清晰,我想在结尾说:)