正则表达式不会忽略字母

时间:2015-10-22 07:07:21

标签: jquery regex

我在下面使用此正则表达式与Textcomplete一起使用,检查是否有人将#@与参数一起写入

正则表达式:

/\B#(\w+)$/

我从数据库中加载了一些名称,您可以使用#@进行搜索。让我们说在数据库中它包含Stackoverflow。

如果我写#Stackoverflow,那我就写了一封很大的S字母。 但如果我写#stackoverflow它不会起作用,因为小写字母。

我的问题是如何更改正则表达式以便忽略小字母或大字母?

更新了脚本

$('textarea').textcomplete([
               { // html
                   mentions: Companies,
                   match: /\B#(\w+)\i$/,
                   search: function (term, callback) {
                       callback($.map(this.mentions, function (mention) {
                           return mention.indexOf(term) === 0 ? mention : null;
                       }));
                   },
                   template: function (value) {
                       return '<img src="/emoji/' + value + '.png"></img>' + value;
                   },
                   index: 1,
                   replace: function (mention) {
                       return '#' + mention + ' ';
                   }
               }
            ],
            { appendTo: 'body' }).overlay([
                   {
                       match: /\B#\w+/g,
                       css: {
                           'background-color': '#d8dfea',
                       }
                   }
            ])

为了告诉你它不起作用,我在codePen创建了它。

2 个答案:

答案 0 :(得分:2)

您可以使用/i选项忽略此案例。所以你的正则表达式将是

/\B#(\w+)$/i

修改

刚刚检查了你的正则表达式,它没有/i

就可以正常工作

<强> DEMO

答案 1 :(得分:1)

我最后将回调修改为

return mention.toLowerCase().indexOf(term.toLowerCase()) === 0 ? mention : null;

Here is an updated codepen

现在,它有效:

enter image description here

enter image description here