【问题标题】:How to extract substring matching the pattern using JQuery如何使用 JQuery 提取与模式匹配的子字符串
【发布时间】:2020-03-05 05:47:36
【问题描述】:

我想使用正则表达式从字符串中提取全名。我怎样才能做到这一点?这段代码给了我结果的空值。怎么了?

var p = '№ 46/20 John Smith Newmore 23.01.2020';
var result = p.match(/^([a-zA-Z0-9]+|[a-zA-Z0-9]+\s{1}[a-zA-Z0-9]{1,}|[a-zA-Z0-9]+\s{1}[a-zA-Z0-9]{3,}\s{1}[a-zA-Z0-9]{1,})$/);

我的预期结果与正则表达式匹配:

现有数据 - 字符串: '№ 46/20 约翰史密斯纽莫尔 23.01.2020'

预期结果: '约翰·史密斯·纽莫尔'

【问题讨论】:

  • 使用p.replace(/[^a-zA-Z ]+/g,'').trim()
  • @WiktorStribiżew 我如何使用西里尔符号?
  • p.replace(/[^а-яА-ЯёЁa-zA-Z ]+/g,'').trim() 如果你要俄罗斯的。或p.replace(/[^\u0400-\u04FFa-zA-Z ]+/g,'').trim() 处理任何西里尔字符。
  • @WiktorStribiżew 我得到了相同的“未捕获的语法错误:无效的正则表达式:/[^Р°-СЏРђ-РЇС'РЃa-zA-Z]+/:字符类中的范围无序”
  • 你的文件编码有问题。但p.replace(/[^\u0400-\u04FFa-zA-Z ]+/g,'').trim() 将适用于所有西里尔字符。

标签: javascript jquery regex find


【解决方案1】:

var str = '№ 46/20 John Smith Newmore 23.01.2020';

console.log(str.replace(/[^a-zA-Z ]/g, ""));

【讨论】:

    【解决方案2】:

    您可以尝试使用正则表达式匹配数字后跟空格空格后跟数字之间的任何内容lookbehindlookahead

    var p = '№ 46/20 John Smith Newmore 23.01.2020';
    var result = p.match(/(?<=\d+ ).+(?= \d+)/)[0];
    console.log(result);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      相关资源
      最近更新 更多