用于从字符串模式中提取城市名称的正则表达式

时间:2014-09-26 04:12:44

标签: java javascript ruby-on-rails regex

我想从以下示例模式中提取城市名称。

  1. Philadelphia.json
  2. 费城
  3. Washington D.C..json
  4. Upstate New York.json
  5. 只有一个正则表达式。应该适合所有上述模式来提取城市名称。

    .json到底是可选的。只有当它是API调用时才会出现,如果是HTML请求,它将不会出现。

    预计输出如下:

    1. 费城
    2. 费城
    3. Washington D.C。
    4. 纽约上州
    5. 请帮我解决这个问题。

5 个答案:

答案 0 :(得分:1)

试试这个:

没有正则表达式:

yourString = (yourString.lastIndexOf(".json") > -1)?yourString.slice(0,-5):yourString;

使用正则表达式:

yourString = yourString.replace(/\.json$/,"");

答案 1 :(得分:1)

您可以尝试使用以下正则表达式仅匹配一开始就存在的城市名称。

^[A-Z][a-z]+(?: [A-Z]\.[A-Z]\.?|(?: [A-Z][a-z]+)*)

DEMO

^[A-Z][a-z]+[ .A-Za-z]*?(?=\.json|$)

DEMO

答案 2 :(得分:1)

^([A-Z][\s\w.,-]+?)(?=\.json|$)

试试这个。参见演示。

http://regex101.com/r/lS5tT3/38

答案 3 :(得分:0)

您可以执行以下操作:

String test = "Philadelphia.json";      // or any other input string
    String replaced = test.replace(".json", "");

答案 4 :(得分:0)

如果没有必要使用正则表达式,那么这个简单的单行功能将为您完成工作:

function removeJson(s){
        return s.replace('.json','');
}
alert(removeJson("Philadelphia.json")); //"Philadelphia"
alert(removeJson("Philadelphia"));      //"Philadelphia"

将任何字符串传递给它,如果存在,则删除.json。

<强> See the DEMO here