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中如何验证字符串相等的主要内容,如果未能解决你的问题,请参考以下文章

JSF 验证器与字符串的相等性比较

js 如何比较两个对象相等

php 怎么利用两个字符串用sha1加密相等绕过

jsp中如何判断字符串相等?

Shell 字符串比较相等、不相等方法小结

js判断字符串是不是相等