簡體   English   中英

如果數組不包含字符串

[英]if array does not contain string

我正在創建一個用戶注冊頁面,並且我不希望任何與數組不匹配的字符。

function create(){
var allowed = [
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"1","2","3","4","5","6","7","8","9","0","_","-"];

var username = $("#username").val();

if (username == ""){
document.getElementById("usernameerror").style.color = "red";
document.getElementById("usernameerror").innerHTML = " Username cannot be blank.";
}else{

if (username.indexOf(allowed) != -1){
document.getElementById("usernameerror").style.color = "red";
document.getElementById("usernameerror").innerHTML = " No symbols.";
}else{
document.getElementById("usernameerror").style.color = "blue";
document.getElementById("usernameerror").innerHTML = " ✔";
}

}

}

我敢打賭這很簡單..(不是子字符串)

這正是正則表達式旨在解決的問題。 嘗試替換此行:

if (username.indexOf(allowed) != -1){

...有了這個:

if (!/^[a-z0-9_-]*$/i.test(username)) {

您的要求也與\\w元字符非常相似,這使您可以將其用於正則表達式:

/^[\w-]+$/

怎么樣:

 if (username.match(/[^\\w-]/) !== null) { console.log('username has non-word characters...'); } 

\\ w的功能請參見此處: MDN正則表達式

看一下這個:

if (/^[a-z0-9\-\_]+$/.test(username)) {
  document.getElementById("usernameerror").style.color = "red";
  document.getElementById("usernameerror").innerHTML = " No symbols.";
}else{
  document.getElementById("usernameerror").style.color = "blue";
  document.getElementById("usernameerror").innerHTML = " ✔";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM