js中如何验证字符串相等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js中如何验证字符串相等相关的知识,希望对你有一定的参考价值。
就是编写了一个表单的,提交时,用js验证两次输入密码是否相等,直接“==”行吗
而且要不相等时,再返回到注册页面
javascript中等于(==)可以判断值是否一致,恒等于(===)用以判断值与类型是否都一致。所以验证字符串是否相等可以使用==或===,但是在涉及到变量类型时需要注意==与===的区别。
下面给出验证字符串相等的实例演示:
1、创建html元素
<div class="box"><span>实例演示:点击按钮验证两次输入的密码是否一致</span><br>
<div class="content">
请输入密码:<input type="text" id="pwd1"><br>
请重复密码:<input type="text" id="pwd2">
<input id='btn' type='button' onclick='test()' value='提交' />
</div>
</div>
2、设置css样式
div.boxwidth:300px;padding:20px;margin:20px;border:4px dashed #ccc;div.box>spancolor:#999;font-style:italic;
div.contentwidth:250px;margin:10px 0;padding:20px;border:2px solid #ff6666;
input[type='button']height:30px;margin:10px;padding:5px 10px;
input[type='text']width:100px;padding:5px 10px;margin:5px 0;border:1px solid #ff9966;
3、编写jquery代码
function test()pwd1 = document.getElementById("pwd1").value;
pwd2 = document.getElementById("pwd2").value;
if(pwd1=="")
alert("请输入密码")
else if(pwd2=="")
alert("请重复密码")
else if(pwd2!==pwd1)
alert("两次密码输入不一致")
else
alert("验证通过")
4、观察效果
参考技术A 很简单。。的写一个。。。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function checknumber()
var userform = document.getElementsByName('userform')[0];
if(userform.acctno.value =='' || userform.pass1.value == '' || userform.pass2.value == '')
alert('信息为空!')
return false;
else
if(userform.pass1.value == userform.pass2.value)
return ture;
else
userform.pass2.value='';
userform.pass2.focus();
alert('密码输入错误!')
return false;
</script>
</head>
<body>
<form method="get" action="" name="userform" onsubmit="return checknumber()">
<p>账号:
<input type="text" name="acctno" size="16">
<p>密码:
<input type="password" name="pass1" size="10">
<p>重复:
<input type="password" name="pass2" size="10">
<p>
<input type="submit" value="提交">
<input type="reset" value="重填">
</form>
</body>
</html> 参考技术B 不可以哦,用equals方法。
if (pwd1.equals(pwd2)) ...追问
不相等时怎样跳回注册页面呢,
追答用window.location.href="index.html"。
本回答被提问者采纳如果其中一个不完全相等,我该如何匹配字符串?
【中文标题】如果其中一个不完全相等,我该如何匹配字符串?【英文标题】:how can i match strings, if one of them are not complete equal? 【发布时间】:2021-12-09 04:23:19 【问题描述】:我有两个数组,我想验证两个数组是否同步,如果两个数组中存在相同的名称,应该存储在数组中,而其他的则没有
例如:我需要名称为 rea.jpg
的所有对象,但在我的数组中我有这样的 ['dsjajdsj...h2/rea.jpg']
这是材料
[name: 'hgb.jpg' , name: 'rea.jpg', name: 'ca.png' ]
文件扩展名始终是字符串的结尾
我想验证名称数组中是否存在对象
const names = ['h2/rea.jpg']
const materials = [
name: 'hgb.jpg'
,
name: 'rea.jpg'
,
name: 'ca.png'
]
const res = materials.filter(x => names.includes(x.name))
console.log('RES', res)
预期结果应该是[ name: 'rea.jpg']
【问题讨论】:
您的names
数组具有完全限定的文件名(带路径),我假设您不想比较路径组件,只比较文件名,那么为什么不创建第二个数组只有来自names
的文件名?然后您的过滤器代码将起作用。
@jarmod 我怎样才能在不使用这个字符 / 的情况下创建名称列表?
见***.com/questions/19811541/…
@jarmod 我不想安装一个库或者除非它太必要?
@jarmod ProGu 的答案可以在所有情况下工作吗?
【参考方案1】:
使用Array#some
传入自定义比较函数。
const names = ['h2/rea.jpg']
const materials = [
name: 'hgb.jpg'
,
name: 'rea.jpg'
,
name: 'ca.png'
]
const res = materials.filter(x => names.some(y => y.endsWith('/' + x.name)))
console.log('RES', res)
【讨论】:
会错误匹配law/mens-rea.jpg
等
修改为添加前导/
如果names
数组元素总是包含路径,更新后的代码就OK了。
原来的问题是这么说的
如果名称和材料不固定,则无解。【参考方案2】:
const names = ['h2/rea.jpg']
const materials = [
name: 'hgb.jpg'
,
name: 'rea.jpg'
,
name: 'ca.png'
]
const res = materials.filter(x =>
const ni = names.filter(ni => ni.includes(x.name))
return ni.length > 0
)
console.log(res)
但是,如果名称很长并且您不想在材料的每个元素上对其进行迭代,请遵循其他建议并将名称转换为仅包含文件名。
const fnames = names.map(ni => ni.split('/')[ni.split('/').length-1])
const res = materials.filter(x => names.includes(x.name))
console.log(res)
【讨论】:
【参考方案3】:在过滤器内部使用some
来实现这一点(注意,这将在 O(n^2) 中运行)。
const names = ['h2/rea.jpg']
const materials = [
name: 'hgb.jpg'
,
name: 'rea.jpg'
,
name: 'ca.png'
]
const res = materials.filter(x => names.some(y => y.endsWith('/' + x.name)))
console.log('RES', res)
【讨论】:
【参考方案4】:假设这是 Node.js,您可以使用 path
库将完全限定的路径名转换为简单的文件名,然后进行包含测试。例如:
const path = require('path');
const pathnames = ['h2/rea.jpg'];
const filenames = pathnames.map((x) => path.basename(x));
const materials = [
name: 'hgb.jpg',
,
name: 'rea.jpg',
,
name: 'ca.png',
,
];
const res = materials.filter((x) => filenames.includes(x.name));
console.log('RES', res);
// RES [ name: 'rea.jpg' ]
【讨论】:
【参考方案5】:如果你喜欢 oldscool,那么使用两个循环和正则表达式。
const names = ['h2/rea.jpg']
const materials = [
name: 'hgb.jpg'
,
name: 'rea.jpg'
,
name: 'ca.png'
]
const res = [];
materials.forEach((x) =>
let search = x.name
let reg = new RegExp(search, 'g');
let match = '';
names.forEach((n) =>
match = n.match(reg);
)
if(match)
res.push(x)
)
console.log('RES', res)
【讨论】:
以上是关于js中如何验证字符串相等的主要内容,如果未能解决你的问题,请参考以下文章