我想在 Javascript 中使用正则表达式来匹配第一个位置包含数字然后街道名称的字符串,例如:
圣路易斯街 54 号
我尝试的正则表达式是这样的: var res =/[0-9]\s[A-Z]\s[A-Z-]/.test("8 street Saint-Louis");
但它返回 false...
有什么想法吗?
最佳答案
问题:
[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 street'));
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'));
关于JavaScript 正则表达式 : match an adress (number + name of the street),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289086/