我想检查地址字符串中是否有任何数字,但只在'WA'之前,然后根据结果设置cleanAddress变量。
我怎样才能让它只在'WA'之前检查,这样6000就不会导致它返回TRUE。
以及可能不同的州,因此请检查“WA”或“NSW”或“维克”等...
const address = "123 Smith, Suburb, WA 6000"
var cleanAddress = ""
if(address.match(/^\d+$/)) {
cleanAddress = ""
}
else {
cleanAddress = ","
}
预期
"123 Smith, Suburb, WA 6000" \\result cleanAddress = ""
"Suburb, WA 6000" \\result cleanAddress = ","
5条答案
按热度按时间piwo6bdm1#
在此解决方案中,我强烈建议首先查看要查找的部分的模式。(2)逗号在“WA”之前,或者如果情况是它将始终是WA,我将用“WA”将其分开,然后使用正则表达式检查第一个拆分元素是否包含数字。另一种方法是首先找到正则表达式中的逗号,然后通过lastindexof函数(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex),然后从lastindexof(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)的第一个字符到数字进行切片,然后使用正则表达式来表示数字。
33qvvth12#
可以使用下面的正则表达式获取任何检查文本之前的数字。
\b\d+\b(?=.*\bWA)
fkaflof63#
您可以
test
为以下模式:gev0vcfq4#
如果您只想测试出现的次数,可以使用
.test()
和match,而不需要任何lookarounds:说明
\d
匹配数字.*?
匹配不带换行符的任何字符,尽可能少\b(?:WA|NSW|VIC)\b
匹配单词边界之间的任何替代项egdjgwm85#
此代码首先使用indexOf()和substring()方法获取字符串中位于'WA'之前的部分。然后使用正则表达式检查子字符串是否包含任何数字。如果子字符串不包含数字,则代码将cleanAddress设置为逗号(,),否则将cleanAddress设置为空字符串。