Javascript 构建正则表达式
我对正则表达式有以下问题。 我正在用自动完成创建一个文本区域 (我使用⇥ 用于向您显示\n和␣ (对于空格字符) 一行应该是这样的Javascript 构建正则表达式,javascript,regex,Javascript,Regex,我对正则表达式有以下问题。 我正在用自动完成创建一个文本区域 (我使用⇥ 用于向您显示\n和␣ (对于空格字符) 一行应该是这样的 1.1␣BMW⇥Red⇥automatic 或 如果textarea的内容如下所示 1.1␣Mercedes.1⇥Blue⇥manual 2␣Chev 我想要匹配的“Chev” 在这种情况下,我希望得到匹配的“Gr” 到目前为止,我使用了以下表达式 new RegExp('^' + '(\\d+(\\.\\d+)?)\\s*(\\S+)' + // f
1.1␣BMW⇥Red⇥automatic
或
如果textarea的内容如下所示
1.1␣Mercedes.1⇥Blue⇥manual
2␣Chev
我想要匹配的“Chev”
在这种情况下,我希望得到匹配的“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中匹配字符串开头的数组中获取字符串。
第一列(汽车品牌)用于搜索不同的数组,然后第二列(颜色)。第三个是可选的,可以忽略。开头的数字对于匹配也不重要
我真的不是一个正则表达式专家,但我试图找出一个解决方案。。。但现在我受不了了
感谢您的帮助此模式可以满足您的需要:
/[^\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
}
第二部分缺少括号。你认为你让整个第二部分成为可选的,但你只是让最后一个词成为可选的。甚至它们之间的选项卡(不是每个帖子的选项卡)也不是可选的
new RegExp('^' +
'(\\d+(\\.\\d+)?)\\s*(\\S+)' + // for the first example
'(\\t(\\S+)\\t(\\S+))?' + // for the second example
'$',
'm');
您的意思是只需要获取最后一块非空白字符吗<代码>/\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
}
new RegExp('^' +
'(\\d+(\\.\\d+)?)\\s*(\\S+)' + // for the first example
'(\\t(\\S+)\\t(\\S+))?' + // for the second example
'$',
'm');