javascript - 我将如何使用 javascript 将包含两个城市(及其状态)的字符串分隔到它们自己的变量中?

标签 javascript regex

我正在尝试编写一种方法,将此字符串分成两个单独的变量。城市名称可以是一个或多个单词,状态将始终跟在城市名称的最后一个单词之后。

var splitFlightInfo = "LOS ANGELES CA MIAMI FL"

var temp;
var theFlightInfo = splitFlightInfo.shift().split(" ");
var theflightDate = theFlightInfo.shift();
var theFlightArrive = theFlightInfo.pop();
var theFlightDepart = theFlightInfo.pop();
var theFlightPorts = splitFlightInfo.shift();

for(var p = 0; p < theFlightInfo.length; p++){
  if(p === 0){
    temp = theFlightInfo[p];
  } else{
    temp += ' '+theFlightInfo[p];
  }
}

预期结果:

var departPort = "Los Angeles, CA"
var arrivePort = "Miami, FL"

实际结果:无

最佳答案

您可以使用

匹配这些字符串
/.*?\b[A-Z]{2}\b/g

参见 regex demo .

注意:如果您想精确匹配美国各州,您可以替换 [A-Z]{2}(?:AL|AK|AZ|AR|CA|CO|CT|DE|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY) :

/.*?\b(?:AL|AK|AZ|AR|CA|CO|CT|DE|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY)\b/g

图案细节

  • .*? - 尽可能少的除换行字符以外的任何 0+ 个字符
  • \b[A-Z]{2}\b - 由两个大写字母组成的整个单词。

然后,在最后 1+ 个空格 + 1+ 个非空格前添加一个逗号 .replace(/\s+\S+$/, ',$&') .

JS 演示:

var regex = /.*?\b[A-Z]{2}\b/g;
var str = "LOS ANGELES CA MIAMI FL";
var res = str.match(regex);
console.log(res[0].trim().replace(/\s+\S+$/, ',$&'));
console.log(res[1].trim().replace(/\s+\S+$/, ',$&'));

关于javascript - 我将如何使用 javascript 将包含两个城市(及其状态)的字符串分隔到它们自己的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688821/

相关文章:

regex - 在特定模式匹配后插入文件内容

c# - 正则表达式系统的 IndexOutOfRangeException

php - 匹配非注释的 CSS

javascript - js 中立即调用函数的问题

javascript - 0x800a01bd - JavaScript 运行时错误 : Object doesn't support this action

Javascript 如何为命名空间对象的 'scope' 创建别名

javascript - 将参数传递给 .net 中的 jQuery 加载对话框

javascript - jQuery 循环查找值为 true 的最后一个数据属性并添加类

正则表达式用于检测和替换具有重复捕获组的行,以删除 piprequirements.txt 文件中的重复包

php - 我无法让 preg_match 测试整个字符串是否与正则表达式匹配