JQuery与RegEx匹配不起作用

时间:2017-01-24 20:46:39

标签: javascript regex

我的文件名将是这样的:

Annual-GDS-Valuation-30th-Dec-2016-082564K.docx

它将包含5个数字后跟一个字母,但它可能位于文件名中的不同位置。前导零可能存在也可能不存在,但不是必需的。

这是我在查看示例后提出的代码,但SelectedFileClientID总是null

var SelectedFileClientID = files.match(/^d{5}\[a-zA-Z]{1}$/);

我不确定我做错了什么。

编辑:

0与我试图提取的代码无关。它可能存在也可能不存在,它甚至可能是一个完全不同的角色,或者不止一个,但与它完全没有任何关系。客户已经决定要在那里添加其他角色。

4 个答案:

答案 0 :(得分:1)

你的正则表达式至少有3个问题:1)模式用锚点括起来,因此需要完整的字符串匹配,2)d匹配字母d,而不是数字,您需要\d来匹配数字,3)\[匹配文字[,因此字符类会被破坏。

使用

/\d{5}[a-zA-Z]/

<强>详情:

  • \d{5} - 5位数
  • [a-zA-Z] - ASCII字母

JS演示:

&#13;
&#13;
var s = 'Annual-GDS-Valuation-30th-Dec-2016-082564K.docx';
var m = s.match(/\d{5}[a-zA-Z]/);
console.log(m[0]);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

好吧,有一些事情是错的......

var matches = files.match(/\-0?(\d{5}[a-zA-Z])\.[a-z]{3,}$/);
var SelectedFileClientID = matches ? matches[1] : '';

所以:

  1. 首先,我在你的字符串上获得匹配 - .match()
  2. 然后,您的文件名以数字开头 - 所以放弃^
  3. 您忘记了数字的反斜杠:\d
  4. 不要反斜杠你的方括号 - 它在这里用作正则表达式标记
  5. 您的信件不需要{1}:方括号内容就足够了,因为它匹配一个,只有一个字母。
  6. 希望这有帮助!

答案 2 :(得分:0)

尝试这种模式\ d {5} [a-zA-Z]

答案 3 :(得分:0)

尝试 - 0?\d{5}[azA-Z] 正如您所说0可能存在也可能不存在。所以0?会考虑到这一点。

或者可以这样做。它可以匹配任何随机字符。

(\w+|\W+|\d+)?\d{5}[azA-Z]