用于字母数字通配符搜索的正则表达式

Posted

技术标签:

【中文标题】用于字母数字通配符搜索的正则表达式【英文标题】:Regular Expression for Alpha numeric wildcard search 【发布时间】:2019-07-29 22:16:39 【问题描述】:

我需要一个搜索框的正则表达式,它只接受字母数字值,但允许通配符搜索,最后带“*”。

类似“123*”、“abc*”或只是“abc”

  $(".onlyAlphaNumericWildcard").keypress(function (e) 
     //Alphanumeric and also an optional "*" at the end
     var keyCode = e.which;
     var inp = String.fromCharCode(keyCode);
     if (/[a-zA-Z0-9*]/.test(inp)) 
        return true;
     
     return false;
   );

但是上面的那个在任何位置都需要多个 * 字符。我想将其限制为只有一个,如果可能,也仅限于最后。

感谢任何帮助。

谢谢!

【问题讨论】:

【参考方案1】:

类似这样的: ^[a-zA-Z0-9]+\*?$

【讨论】:

【参考方案2】:

使用此正则表达式/(^\w+\*$)|(^\w+$)/g,您可以匹配abcabc*

另一种方式:^\w+\*?$

\*?$ : 可选 * 最后。

^\w : 开头的单词 1 或更多

const regex = /(^\w+\*$)|(^\w+$)/g;
const text = "abc"

console.log(text.match(regex))

【讨论】:

\w 不仅匹配 [a-zA-Z0-9] 还有什么匹配的? 至少 _ 和其他字符取决于正则表达式引擎 很好,谢谢,我会更新我的答案,但另一个问题是,您所说的正则表达式引擎是什么意思?使用正确的语言? 是的,这就是我的意思,我相信我对某些遗留技术有过这种不愉快的经历,但通常\w 匹配[a-zA-Z_]

以上是关于用于字母数字通配符搜索的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

文件通配符与正则表达式

《正则表达式》第1节:正则表达式入门

键盘侠Linux教程| 正则表达式与通配符

10.基本与扩展正则表达式

Linux 正则表达式和通配符 以及Python断言

正则表达式