JavaScript中如何判断一个空字符串?

luoweifu
博客专家认证
2012-08-15 10:04:49
本人对js了解不多,在输入用户名的时候要判断输入用户名是否为空,不知道我下面这个代码错在哪?请各位大侠指教!谢谢!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>扫雷游戏登录</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<script language="JavaScript" type="text/JavaScript"><!--
function checkForm(form)
{
var usrname = form.userName.value;
re = new RegExp("\s*","g");
re = /(\s*)/g
boolean isEmpty = re.test(usrname);
if(isEmpty) {

alert("请输入用户名!");
form.userName.focus();
return false;
}
if(form.password.value == "") {
alert("请输入密码 ");
form.password.focus();
return false;
}
return true;
}
--></script>
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

</head>

<body> <h2 align="center"><strong>欢迎来到扫雷游戏社区!请输入用户名和密码:</strong></h2><br>
<form action="login.jsp" method="post" onsubmit="return checkForm(this);">
<table width="300" border="0" align="center">
<tbody><tr>
<td> 用户名:</td>
<td><input type="text" name="userName"></td></tr>
<tr>
<td> 密码:</td>
<td><input type="text" name="password"></td></tr>
<tr>
<td align="center"><input type="submit" name="login" value="登 录"></td>
<td align="center"> <input type="button" name="register" value="注 册"></td></tr>
</tbody></table><br>
</form>
</body>
</html>
...全文
9423 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoweifu 2012-08-19
  • 打赏
  • 举报
回复
感谢anglechengd!讲的很详细!
anglechengd 2012-08-18
  • 打赏
  • 举报
回复
问题2、flag里i、j、m有什么区别,还有flag可以省略,省略的时候有是怎样的?最好能举个例子解释一下。
i(ingnore) 忽略大小写。
比如一个字符串:JavaScript和javascript
var reg=/(java)+/ 只匹配javascript
var reg=/(java)+/i 两个表字符串都匹配
g(global) 全局查寻,比如你有一几百行的字符串要搜索,那么你要加g标识(js默认搜索范围为一行搜索)
m(multi) 多行查寻 js默认查找到第一个符合的字符串就完成任
注意:这个几个标识可以写一起,也就是说可以这样/\s+/igm

通过上面的标识可以得出JS默认行为,区分大小写,单行查寻,找到第1个符合的字符串;
anglechengd 2012-08-18
  • 打赏
  • 举报
回复
问题1、语法1与语法2的主要区别在于,为什么语法1里/\s+/就可以,而语法2要两个正斜杠才有效如:new RegExp("\\S+"))。
/\s+/ 这个属于正则表达式,是一个式子(可能说不明白),在JS中称为直接量相当于var a=a+b一个公式
RegExp是一个JS里的内置对象,因为“”代表一个子符串,这里需要转义。
为什么需要转义呢?
比如:你想输出\s,这个字符串,应该怎么写?//"\s"
而你又需要输出一个同样的正则,"\s"这样显然不能代表\s,\是一个转义字符,"\\"表示为一个\,
所以要"\\s"


luoweifu 2012-08-16
  • 打赏
  • 举报
回复
已经解决了:
function checkForm(form)
{
if(!(new RegExp("\\S+")).test(form.userName.value)) { //判断用户名是否为空

alert("请输入用户名!");
form.userName.focus();
return false;
}
if(form.password.value=="" ||(new RegExp("^(\\s*) $")).test(form.password.value)) {//判断密码是否为空
alert("请输入密码 ");
form.password.focus();
return false;
}
return true;
}

if(!(new RegExp("\\S+")).test(form.userName.value))和if(form.password.value=="" ||(new RegExp("^(\\s*) $")).test(form.password.value))两种方式都可以。
anglechengd 2012-08-16
  • 打赏
  • 举报
回复

<script type="text/javascript">
function checkForm(form){
var reg=/\s+/;
username=form.userName.value;
if(username.length==0){
alert("请输入用户名");
form.userName.focus();
return false;
}else if(reg.test(username)){
alert("请不要输入空格");
return false;
}
var password=form.password.value;
if(password.length==0){
alert("请输入密码 ");
form.password.focus();
return false;
}else if(reg.test(password)){
alert("请不要输入空格");
return false;
}
}
</script>


LZ还有什么要求? 一并发过来!
luoweifu 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

与楼主同样的界面,我遇到的问题是,用户输入如何得到验证,通过什么函数链接数据库,并验证密码是否正确!求大神解答,万分感谢。
[/Quote]
你是用什么数据库呢?
我用的是jsp+ MySql数据库,已经连接成功了。
luoweifu 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

JScript code

<script type="text/javascript">
function checkForm(form){

username=form.userName.value;
if(username.length==0){
alert("请输入用户名");
form.userNam……
[/Quote]
这是一个简单的处理,如果我输入的是几个空格的话,怎样判断呢?要要判断的是一个空字符串或者一个空字符组成的字符串。
crazybullet 2012-08-16
  • 打赏
  • 举报
回复
与楼主同样的界面,我遇到的问题是,用户输入如何得到验证,通过什么函数链接数据库,并验证密码是否正确!求大神解答,万分感谢。
howtodown 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
JScript code


<script type="text/javascript">
function checkForm(form){

username=form.userName.value;
if(username.length==0){
alert("请输入用户名");
form……
[/Quote]

同意,不过许多用的是正则表达式
anglechengd 2012-08-16
  • 打赏
  • 举报
回复

<script type="text/javascript">
function checkForm(form){

username=form.userName.value;
if(username.length==0){
alert("请输入用户名");
form.userName.focus();
return false;
}
var password=form.password.value;
if(password.length==0){
alert("请输入密码 ");
form.password.focus();
return false;
}
}
</script>
luoweifu 2012-08-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

JScript code

<script type="text/javascript">
function checkForm(form){
var reg=/\s+/;
username=form.userName.value;
if(username.length==0){
alert("请输入用户名");
f……
[/Quote]

看来您这位大侠对JavaScript掌握的还是挺好的吗!我有一个问题想请教一下
关于正则表达式里有一个不理解的地方:

语法 1
re = /pattern/[flags]

语法 2
re = new RegExp("pattern",["flags"])

参数
re

必选项。将要赋值为正则表达式模式的变量名。

Pattern

必选项。要使用的正则表达式模式。如果使用语法 1,用 "/" 字符分隔模式。如果用语法 2,用引号将模式引起来。

flags

可选项。如果使用语法 2 要用引号将 flag 引起来。标志可以组合使用,可用的有:

g (全文查找出现的所有 pattern)
i (忽略大小写)
m (多行查找)

问题:
问题1、语法1与语法2的主要区别在于,为什么语法1里/\s+/就可以,而语法2要两个正斜杠才有效如:new RegExp("\\S+"))。
问题2、flag里i、j、m有什么区别,还有flag可以省略,省略的时候有是怎样的?最好能举个例子解释一下。
myhhsheng 2012-08-15
  • 打赏
  • 举报
回复
一般的都是使用 document.getElementById().value;来获取一个值,想要判断是否为空值 ,可以看看 这个值的 length,如果其length属性值大于0 但是不是空格 则说明是 不是空字符,或者是 先去去空格 字判断length也行 。
jumpheightway 2012-08-15
  • 打赏
  • 举报
回复
用string的split方法可以很轻松的搞定这个问题
一起混吧 2012-08-15
  • 打赏
  • 举报
回复
参照你验证密码的方式就可以了
ahjx777 2012-08-15
  • 打赏
  • 举报
回复
var usrname = form.userName.value;
你把换成var username=ducument.getElementByName('userName').value;
注意 大小写 标点符号

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧