代码之家  ›  专栏  ›  技术社区  ›  Carl

如何在HTML5中编写字母数字模式?

  •  0
  • Carl  · 技术社区  · 5 年前

    pattern="\w*[a-zA-Z]\w*"
    

    这个模式在我尝试使用的RegEx测试程序上得到验证,但是当我在“Manager 2”表单上提供答案时,它不会让我继续。浏览器的解释有什么不同吗

    2 回复  |  直到 5 年前
        1
  •  2
  •   The fourth bird    5 年前

    如果你使用 pattern attribute 在表格上 ^ $ 是隐含的,因此它将匹配整个值。你的模式 \w*[a-zA-Z]\w* 至少匹配一个字符a-z,但不匹配空格。

    Manager 2 您可以使用您的模式,后面跟着一个组,该组重复0+次,匹配空格和1+个单词字符。

    \w*[a-zA-Z]\w*(?: \w+)*
    

    见a regex demo

    请注意 \w 也匹配下划线。

    一个更宽的模式,允许多个空间,并且在最后:

    ^\w*[a-zA-Z][ \w]*
    

    Regex demo

        2
  •  0
  •   Emma    5 年前

    你原来的表情很好,没有空格。在这里,我们可以从一个简单的模式开始,可能类似于:

    [A-Za-z\s0-9]+
    

    如果有必要,我们可以在它周围添加捕获组来保存数据 $1 :

    ([A-Za-z\s0-9]+)
    

    enter image description here

    如果不需要这个表达式,可以在 regex101.com .

    正则表达式电路

    jex.im

    enter image description here

    演示

    const regex = /([A-Za-z\s0-9]+)/gm;
    const str = `Manager 2`;
    let m;
    
    while ((m = regex.exec(str)) !== null) {
        // This is necessary to avoid infinite loops with zero-width matches
        if (m.index === regex.lastIndex) {
            regex.lastIndex++;
        }
        
        // The result can be accessed through the `m`-variable.
        m.forEach((match, groupIndex) => {
            console.log(`Found match, group ${groupIndex}: ${match}`);
        });
    }

    DOMO