0

这让我发疯!

这就是我想要实现的目标:

第 1 部分:伪元素必须以[a-zA-Z0-9]then 开头,它可以有或没有 ONE[._-]或 ONEspace

第 2 部分:它必须以[a-zA-Z0-9]

第 1 部分可以永远重复,但必须在第 2 部分结束。

它尝试了大约一百万种方法,但它从来没有奏效。使用下面的代码,如果我放置“Test_test ”(带有两个“ ”),它会在不应该的时候工作。请帮忙

<!doctype html>

</head>
<body>
    <form method="POST" action="">
        <input type="text" name="pseudo"/><br /><br />
        <input type="submit" name="submit" value="Valider"/>
    </form>

    <?php
        if(isset($_POST['pseudo']))
        {
            $pseudo = $_POST['pseudo'];

            if(preg_match('/([a-zA-Z0-9]{1,}[._-]{0,1})+[a-zA-Z0-9]{1,}$/',$pseudo))
            {
                echo "Ok";
            }else
            {
                echo "Error";
            }
        }       
    ?>

</body>

4

4 回答 4

1

尝试:

/^([[:alnum:]]+[._ -]?)+[[:alnum:]]+$/

alnum是字母和数字的别名。

于 2012-07-24T11:33:22.843 回答
1

那这个呢?

/^([a-zA-Z0-9]+[._ -]?)+[a-zA-Z0-9]$/

alnum 的开头和结尾在这里很明显,但内部部分基本上强制执行 any of[._-]将被“ NOT [._-] ”包围

那是你要的吗?

于 2012-07-24T11:39:39.943 回答
0

首先你必须转义-and.因为[\._\-]它是一个特殊的符号,然后尝试^在正则表达式前面添加符号

于 2012-07-24T11:32:06.493 回答
0

试试这个:

^([a-zA-Z0-9]+[._-]{0,1})+[A-Za-z0-9]+$
于 2012-07-24T11:33:50.163 回答