建立一个RegEx

时间:2018-01-02 19:52:51

标签: javascript regex

我有正则表达式的以下问题。 我正在用automcompletion创建一个textarea (我使用⇥向你显示\ n和␣表示空格字符)

一行应该是这样的

1.1␣BMW⇥Red⇥automatic

1.1␣BMW⇥Red

如果textarea的内容如下

1.1␣Mercedes.1⇥Blue⇥manual
2␣Chev

我想得到匹配的“Chev”

1.1␣Mercedes⇥Blue⇥manual
2␣Chevrolet⇥Gr

在这种情况下,我想得到匹配“Gr”

到目前为止,我使用了以下表达式。

new RegExp('^' +
    '(\\d+(\\.\\d+)?)\\s*(\\S+)' +  // for the first example
    '\\t(\\S+)\\t(\\S+)?' +         // for the second example
    '$',
    'm');

我认为它只是偶然起作用,但它并没有在这种情况下起作用,也应该是有效的

1.1␣BMW⇥Red
2␣Chev

(这里我想得到“Chev”)

我想使用正则表达式进行自动完成。结果用于从数组中获取字符串,该数组以textarea中匹配的字符串开头。 第一个“列”(Car-Brands)用于搜索不同的数组,然后搜索第二个(颜色)。第三个是可选的,可以忽略。开头的数字对于匹配

也不重要

我真的不是一名正则表达式专家,但我试图找出一个解决方案......但现在我已经被惹恼了

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

此模式应该可以满足您的需求:/[^\s]+$/。看看这是否符合您的期望:

var re = new RegExp(/[^\s]+$/);
var matches = textValue.match(re);
if (matches) {
    // Use matches[0] for your autocomplete since there are no capture groups
}

答案 1 :(得分:0)

你在第二部分附近缺少括号。你认为你将整个第二部分作为可选项,但你只是将最后一个单词作为可选项。即使是它们之间的标签(不是你的帖子)也不是可选的。

new RegExp('^' +
    '(\\d+(\\.\\d+)?)\\s*(\\S+)' +  // for the first example
    '(\\t(\\S+)\\t(\\S+))?' +         // for the second example
    '$',
    'm');