我有正则表达式的以下问题。 我正在用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)用于搜索不同的数组,然后搜索第二个(颜色)。第三个是可选的,可以忽略。开头的数字对于匹配
也不重要我真的不是一名正则表达式专家,但我试图找出一个解决方案......但现在我已经被惹恼了
感谢您的帮助
答案 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');