कैसे बताएं कि क्या एक स्ट्रिंग में जावास्क्रिप्ट में एक निश्चित चरित्र है?


334

मेरे पास एक टेक्स्टबॉक्स वाला एक पृष्ठ है जहां एक उपयोगकर्ता को 24 वर्ण (अक्षर और संख्या, केस असंवेदनशील) पंजीकरण कोड दर्ज करना है। मैं maxlengthउपयोगकर्ता को 24 वर्णों में प्रवेश करने के लिए सीमित करता था।

पंजीकरण कोड आम तौर पर डैश द्वारा अलग किए गए वर्णों के समूह के रूप में दिए जाते हैं, लेकिन मैं उपयोगकर्ता को डैश के बिना कोड दर्ज करना चाहूंगा।

मैं अपने जावास्क्रिप्ट कोड को jQuery के बिना कैसे लिख सकता हूं कि यह जांचने के लिए कि किसी दिए गए स्ट्रिंग में उपयोगकर्ता इनपुट में डैश नहीं हैं, या बेहतर अभी तक, केवल अल्फ़ान्यूमेरिक वर्ण हैं?


2
यहाँ उत्तर मिला stackoverflow.com/questions/3192612 अल्फ़ान्यूमेरिक पर मान्य करने के बारे में जानकारी है।
जसकाव

1
और नियमित अभिव्यक्ति जानने के लिए: regular-expressions.info
Felix Kling

आप के लिए jquery लोगों को आप का उपयोग करना चाहिए inArray
योना

3
कैसे इनपुट स्वरूपित किया जाता है एक मानव की समस्या नहीं है। यह कंप्यूटर की समस्या है। उपयोगकर्ता जो कुछ भी दर्ज करता है उसे ले लो और सभी वर्णों (गैर-अल्फ़ा) को न निकालें, परिणाम देखने के लिए परीक्षण करें 24 वर्ण लंबा है, फिर इसे मान्य करें। उपयोगकर्ता के वास्तव में नफरत स्वरूपित इनपुट।
tggagne

जवाबों:


591

में "हैलो" खोजने के लिए your_string

if (your_string.indexOf('hello') > -1)
{
  alert("hello found inside your_string");
}

अल्फा न्यूमेरिक के लिए आप एक रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

http://www.regular-expressions.info/javascript.html

अल्फा न्यूमेरिक रेगुलर एक्सप्रेशन


यह काफी मददगार था। एक अजगर प्रोग्रामर के रूप में बोलते हुए, मैं "इन" कीवर्ड को बदलने के लिए उपयोग कर रहा हूं (जो अपरंपरागत हो सकता है या नहीं भी हो सकता है, मैं अनिश्चित हूं) लेकिन यह सिर्फ एक ही चरित्र से अधिक के लिए काम करता है।
trevorKirkby

1
मुझे समझ नहीं आ रहा है कि इस जवाब पर वोट कैसे दिया गया। मैं देख सकता हूं कि गोग्लिंग द्वारा बहुत सारे लोग यहां आते हैं। एक बेहतर तरीका निश्चित रूप से एक नियमित अभिव्यक्ति का उपयोग होगा।
स्पॉक

25
आप किसी एकल वर्ण की जांच करने के लिए एक नियमित अभिव्यक्ति का उपयोग करेंगे? ओवरहेड की एक अत्यधिक मात्रा ठीक उसी चीज़ को प्राप्त करने के लिए है जिसे फ़ंक्शन करता है। बहुत सारे लोग हैं जो रेगेक्स को नहीं समझते हैं, और आमतौर पर सरल उत्तर सबसे अच्छा होता है।
kemiller2002

मैं साथ जाता /hello/g.test(your_string)। जब indexOf काम करता है, मुझे लगता है कि एक रेगेक्स टेस्ट बेहतर कहानी बताता है जिसे आप पूरा करने की कोशिश कर रहे हैं। अगर मैं एक स्ट्रिंग के अंदर वर्णों के अनुक्रम को खोजने की कोशिश कर रहा हूं, तो सूचकांक अप्रासंगिक है।
जो मैफेई


69

ES6 .includes () के साथ

"FooBar".includes("oo"); // true

"FooBar".includes("foo"); // false

"FooBar".includes("oo", 2); // false

ई: आईई द्वारा सुपरसीड नहीं किया गया - इसके बजाय आप .indexOf ~( ) के साथ टिल्ड ऑपेरेटर ( बिटवाइज़ नहीं ) का उपयोग कर सकते हैं ()

~"FooBar".indexOf("oo"); // -2 -> true

~"FooBar".indexOf("foo"); // 0 -> false

~"FooBar".indexOf("oo", 2); // 0 -> false

एक संख्या के साथ प्रयोग किया जाता है, टिल्ड ऑपरेटर प्रभावी करता है ~N => -(N+1)। बूलों में संख्याओं को परिवर्तित करने के लिए इसे दोहरे नकार के साथ प्रयोग करें !!( तार्किक नहीं ):

!!~"FooBar".indexOf("oo"); // true

!!~"FooBar".indexOf("foo"); // false

!!~"FooBar".indexOf("oo", 2); // false

सरल, पठनीय, और एक बूलियन देता है। जब आप एक नियमित अभिव्यक्ति की जरूरत नहीं है के लिए बिल्कुल सही।
bryanbraun

1
** कृपया ध्यान दें कि इसमें शामिल विधि IE ** द्वारा समर्थित नहीं है
Bonez024

52

यदि आपके पास चर में पाठ है foo:

if (! /^[a-zA-Z0-9]+$/.test(foo)) {
    // Validation failed
}

यह परीक्षण करेगा और सुनिश्चित करेगा कि उपयोगकर्ता ने कम से कम एक वर्ण दर्ज किया है, और केवल अल्फ़ान्यूमेरिक वर्णों में प्रवेश किया है ।


यहां सबसे अच्छा जवाब, अन्य सभी उत्तर मेरे पोव से अशक्त हैं।
क्रिस_आर

19

जाँच करें कि क्या स्ट्रिंग (शब्द / वाक्य ...) में विशिष्ट शब्द / वर्ण है

if ( "write something here".indexOf("write som") > -1 )  { alert( "found it" );  } 

क्या यह IE पर काम करता है? -> stackoverflow.com/questions/3480771/…
Ger Soto

11

ईएस 6includes में स्ट्रिंग की इनबिल्ट विधि ( ) शामिल है prototype, जिसका उपयोग यह जांचने के लिए किया जा सकता है कि स्ट्रिंग में एक और स्ट्रिंग है या नहीं।

var str = 'To be, or not to be, that is the question.';

console.log(str.includes('To be')); 

गैर-समर्थित ब्राउज़रों में इस पद्धति को जोड़ने के लिए निम्नलिखित पॉलीफिल का उपयोग किया जा सकता है। ( स्रोत )

if (!String.prototype.includes) {
  String.prototype.includes = function(search, start) {
    'use strict';
    if (typeof start !== 'number') {
      start = 0;
    }
    
    if (start + search.length > this.length) {
      return false;
    } else {
      return this.indexOf(search, start) !== -1;
    }
  };
}


7

इसे पूरा करने के लिए एक नियमित अभिव्यक्ति का उपयोग करें।

function isAlphanumeric( str ) {
 return /^[0-9a-zA-Z]+$/.test(str);
}

यह ठीक एक अंक के लिए जाँच करेगा , और ओपी की इच्छाओं के अनुसार सभी अल्फ़ान्यूमेरिक वर्णों को स्वीकार नहीं करेगा।
cdhowie

@cdhowie .. a + को भूल गए, लेकिन मैंने सवाल को गलत बताया था .. इशारा करने के लिए धन्यवाद।
गैब्रियल पेट्रीओली

6

तुम सब बहुत कठिन सोच रहे हो। बस एक सरल नियमित अभिव्यक्ति का उपयोग करें, यह आपका सबसे अच्छा दोस्त है।

var string1 = "Hi Stack Overflow. I like to eat pizza."
var string2 = "Damn, I fail."

var regex = /(pizza)/g // Insert whatever phrase or character you want to find

string1.test(regex); // => true
string2.test(regex); // => false

5 मिनट में जानें रेगेक्स?


तो इस के साथ कुछ व्यावहारिक करने के लिए, आप बस इसे एक चयन में चलाएंगे:if ( string1.test(regex) ) { alert("He likes pizza!"); }
एडम McArthur

और आपका अल्फ़ान्यूमेरिक टेस्ट होगा ...var regex = /^[a-z0-9]+$/i
एडम मैकआर्थर

4
यह पीछे की तरफ है। देखें developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/... regexObj.test (एसटीआर)
राल्फ Yozzo

यह पीछे की ओर है? regex.test(string1)
hlcs

आपके उदाहरण के तरीके पीछे की ओर हैं। यह होना चाहिए regex.test(str)। ( str.match(regex)समान है, लेकिन एक बूलियन वापस नहीं करता है।)
jsejcksn

6

यदि आप शुरुआत में या स्ट्रिंग के अंत में चरित्र की तलाश कर रहे हैं, तो आप भी उपयोग कर सकते हैं startsWithऔरendsWith

const country = "pakistan";
country.startsWith('p'); // true
country.endsWith('n');  // true


4

केवल अल्फ़ान्यूमेरिक वर्णों का परीक्षण करने के लिए:

if (/^[0-9A-Za-z]+$/.test(yourString))
{
    //there are only alphanumeric characters
}
else
{
    //it contains other characters
}

रीगेक्स वर्णों के सेट के 0-9, AZ और az के 1 या अधिक (+) के लिए परीक्षण कर रहा है, इनपुट (^) की शुरुआत के साथ शुरू होता है और इनपुट ($) के अंत के साथ रुकता है।


4

केविन्स का उत्तर सही है, लेकिन इसके लिए "जादू" संख्या की आवश्यकता है:

var containsChar = s.indexOf(somechar) !== -1;

उस स्थिति में आपको यह जानना होगा कि -1 खड़ा नहीं है । मुझे लगता है कि थोड़ा बेहतर संस्करण होगा:

var containsChar = s.indexOf(somechar) >= 0;

खैर के अनुसार मूल , वर्तमान , और मसौदा मानकों, indexOf()वापस आ जाएगी -1 अगर स्ट्रिंग नहीं मिला है। तो यह शायद ही 0 का उपयोग करने की तुलना में अधिक जादू है ।
सभी श्रमिक आवश्यक


3

स्ट्रिंग का खोज फ़ंक्शन उपयोगी है। यह एक चरित्र के साथ-साथ एक दिए गए स्ट्रिंग में एक सब_स्ट्रिंग की खोज करता है।

'apple'.search('pl') रिटर्न 2

'apple'.search('x') वापसी -1


2

यदि आप DOM से एपी या एच 1 टैग जैसे डेटा पढ़ रहे हैं, उदाहरण के लिए, आप दो देशी जावास्क्रिप्ट फ़ंक्शंस का उपयोग करना चाहेंगे, यह शांत आसान है, लेकिन es6 तक सीमित है, कम से कम उस समाधान के लिए जो मैं प्रदान करने जा रहा हूं। मैं डोम के भीतर सभी पी टैग खोजूंगा, अगर पाठ में "टी" है तो पूरा पैराग्राफ हटा दिया जाएगा। मुझे उम्मीद है कि इस छोटे से उदाहरण से किसी को मदद मिलेगी!

एचटीएमएल

<p>Text you need to read one</p>
<p>Text you need to read two</p>
<p>Text you need to read three</p>

जे एस

let paras = document.querySelectorAll('p');

paras.forEach(p => {
  if(p.textContent.includes('T')){
       p.remove();
    } 
});

1

पूरी तरह से काम कर रहे हैं। यह बहुत तेजी से मदद मिलेगी।

<script>    
    function check()
    {
       var val = frm1.uname.value;
       //alert(val);
       if (val.indexOf("@") > 0)
       {
          alert ("email");
          document.getElementById('isEmail1').value = true;
          //alert( document.getElementById('isEmail1').value);
       }else {
          alert("usernam");
          document.getElementById('isEmail1').value = false;
          //alert( document.getElementById('isEmail1').value);
       }
    }
</script>

<body>
    <h1>My form </h1>
    <form action="v1.0/user/login" method="post" id = "frm1">
        <p>
            UserName : <input type="text" id = "uname" name="username" />
        </p>
        <p>
            Password : <input type="text" name="password" />
        </p>
        <p>
            <input type="hidden" class="email" id = "isEmail1" name = "isEmail"/>
        </p>
        <input type="submit" id = "submit" value="Add User" onclick="return check();"/>
    </form>
</body>

0

प्रदर्शन: शामिल () विधि पूरे स्ट्रिंग में "समाहित" वर्ण को ढूंढती है, यह एक सच लौटाएगा।

var string = "This is a tutsmake.com and this tutorial contains javascript include() method examples."

str.includes("contains");

//The output of this

  true


0

जांचें कि क्या स्ट्रिंग अल्फ़ान्यूमेरिक या अल्फ़ान्यूमेरिक + कुछ अनुमत वर्ण हैं

सबसे तेज़ अल्फ़ान्यूमेरिक विधि के रूप में उल्लेख किया गया है: जावास्क्रिप्ट में अल्फ़ान्यूमेरिक जांच का सबसे अच्छा तरीका है क्योंकि यह सीधे संख्या सीमाओं पर संचालित होता है।

फिर, कुछ अन्य अतिरिक्त वर्ण sanely हम सिर्फ उन्हें रख सकते हैं अनुमति देने के लिए एक मेंSet तेजी देखने के लिए।

मेरा मानना ​​है कि यह कार्यान्वयन सरोगेट जोड़ों के साथ सही ढंग से निपटेगा।

#!/usr/bin/env node

const assert = require('assert');

const char_is_alphanumeric = function(c) {
  let code = c.codePointAt(0);
  return (
    // 0-9
    (code > 47 && code < 58) ||
    // A-Z
    (code > 64 && code < 91) ||
    // a-z
    (code > 96 && code < 123)
  )
}

const is_alphanumeric = function (str) {
  for (let c of str) {
    if (!char_is_alphanumeric(c)) {
      return false;
    }
  }
  return true;
};

// Arbitrarily defined as alphanumeric or '-' or '_'.
const is_almost_alphanumeric = function (str) {
  for (let c of str) {
    if (
      !char_is_alphanumeric(c) &&
      !is_almost_alphanumeric.almost_chars.has(c)
    ) {
      return false;
    }
  }
  return true;
};
is_almost_alphanumeric.almost_chars = new Set(['-', '_']);

assert( is_alphanumeric('aB0'));
assert(!is_alphanumeric('aB0_-'));
assert(!is_alphanumeric('aB0_-*'));
assert(!is_alphanumeric('你好'));

assert( is_almost_alphanumeric('aB0'));
assert( is_almost_alphanumeric('aB0_-'));
assert(!is_almost_alphanumeric('aB0_-*'));
assert(!is_almost_alphanumeric('你好'));

गिटहब ऊपर

Node.js v10.15.1 में परीक्षण किया गया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.