如何使用JavaScript使字符串必须以大写字母开头?

6
      <form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn">
              User Name:<br />
          <input type="text" name="userName" size="25" /><br />
              Password:<br />
          <input type="password" name="pw" size="25" /><br />

          <input type="submit" value="Log In" onClick="validate()"/> 
      </form>

这是我的HTML代码,我已经想出如何只允许字母数字数据进入字段,但如何使它只允许以大写字母开头的用户名呢?

      <script language="javascript">

              </script> 

+1 为自引用标题点赞! - user180326
validate() 函数的内容是什么? - Dan Davies Brackett
4个回答

3

最简单的方法是使用正则表达式进行检查:

function(str){
    return /^[A-Z]/.test(str);
}

当输入字符串以大写字母开头时返回true,否则返回false。(这个正则表达式 - 在//字符之间的部分 - 表示“匹配字符串开头后面跟着A-Z范围内的任意单个字符”)。

就您上面的HTML而言,我们需要validate()函数的内容来确定正则表达式匹配需要放在哪里。


我对此完全不了解 - 我如何使用上面的HTML编写一个完整的函数呢? - Jason
根据评论进行编辑回答。感谢您的指正,cw =) - Dan Davies Brackett

0
在您的验证函数中,使用类似于以下的正则表达式match
 if (titleString.match(/^[A-Z]/))
     <ok>

我尝试过了,但对我没用,你能写完整的函数吗? - Jason

0
var letter = str[0];
if (letter !== letter.toUpperCase()){
   //not uppercase!
}

我尝试了类似的方法,为了支持非标准拉丁字符,但你需要做更多的工作来使其有效,比如排除数字、其他随机字符等。 - Niklas
通过使用 toLowerCase() 进行额外的测试,可以清除任何非字母字符,尽管您可能希望翻转条件。var isok = (letter===letter.toUpperCase() && letter!==letter.toLowerCase()); - lincolnk

0

这将检查输入的用户名是否以大写字母开头,并且后面跟着5-24个字母或数字字符。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

    <head>

        <script type="text/javascript">

            function validate() {

                var the_input = document.getElementById('userName').value;

                if (!the_input.match(/^[A-Z]([A-Z]|[a-z]|[0-9]){5,24}$/)) {

                    alert('Your username must begin with a capital letter, and contain between 6 and 25 alphanumeric characters.');

                    return false;

                } else {

                    alert('Welcome!');

                    return true;

                }

            }

        </script>

    </head>

    <body>

        <form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn">

            User Name:<br />

            <input type="text" name="userName" id="userName" size="25" /><br />
            Password:<br />
            <input type="password" name="pw" size="25" /><br />

            <input type="submit" value="Log In" onclick="return validate();"/>

        </form>

    </body>

</html>

作为旁注,需要注意的是,如果用户关闭了JavaScript,则此方法将无法工作——您可能希望使用一些服务器端验证来代替或作为备用计划。

你在输入框中包含了 id="userName"validate() 函数吗? - Gruffy
onclick 属性中,那个 label 是做什么的? - Quentin
@Quentin,我不明白,你所说的“label”是什么意思? - Gruffy
@Guffy — javascript:,它为稍后的continue语句提供了标签(例如),但您没有循环,因此它无效。 - Quentin
@Quentin - 明白了,已经相应地进行了编辑!出于好奇,脚本对你来说是否有效,除了标签之外? - Gruffy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接