2017-09-11 3 views
0

Ich habe diesen Code und es muss wahr oder falsch basierend auf der Zeichenfolge, die Sie es geben. Dies ist das einzige Beispiel, in dem es nicht funktioniert. Wie kann ich prüfen, ob Klammern in einem bestimmten Index der Zeichenfolge vorhanden sind?Wie kann ich nach Klammern an einer bestimmten Stelle in der Zeichenfolge suchen?

function telephoneCheck(str) { 

var newStr = str.replace(/-/g,'').replace(/ /g,'').replace(/\(|\)/g,''); 
var valid = true; 
var re = /\([^()]*\)/g; 
while (str.match(re)) 
    str = str.replace(re, ''); 
if (str.match(/[()]/)){ 
    valid = false; 
} 
if(newStr.length === 10 && valid === true && str.indexOf()){ 
    return true; 
}else if(newStr.length === 11 && str[0] != "-" && newStr[0] == 1 && valid === true){ 
    return true; 
}else{ 
    return false; 
} 
} 

telephoneCheck("(6505552368)"); 
+0

Verwenden Sie eine geeignete Regex. Wie lauten die Regeln? –

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt – marvel308

+0

Sie verwenden 'str.indexOf()' ohne den Suchwertparameter. Es ist erforderlich, damit die Methode funktioniert. –

Antwort

0

Basierend auf Ihren Code ich glaube, Sie könnten für so etwas suchen:

'(6505552368)'.replace(/^\((\d+)\)$/, '$1'); 

Die ^ und $ in der RegExp den Beginn und das Ende der Zeichenfolge übereinstimmen. Die \d+ wird mit einer oder mehreren Nummern übereinstimmen. Die zusätzlichen Klammern bilden eine Erfassungsgruppe, die dann beim Ersetzen als $1 verwendet wird.

Sie können besser mit RegExps arbeiten, anstatt alles zu ersetzen, aber ohne die genauen Anforderungen zu kennen, ist es schwierig, genauer zu sein. Ich empfehle dringend, mehr über die RegExp-Syntax zu erfahren.

Wenn Sie buchstäblich will nur wissen, ob ‚Klammern in einem bestimmten Index existieren‘ dann können Sie nur verwenden:

str.charAt(index) === '('; 
0

Um zu überprüfen, ob Klammern an einem bestimmten Index im String sind:

/[()]/.test(str[index])

Um zu überprüfen, ob es überhaupt irgendwelche Klammern in die Zeichenfolge sind:

/[()]/.test(str)

Wenn Sie nach einem bestimmten Klammertyp (z. Öffnen, aber nicht schließen), entfernen Sie das andere (z. B. Schließen) aus der Regex.

+0

es funktioniert nicht für mich –

+0

Wie versuchen Sie es zu verwenden? Können Sie mir ein Beispiel dafür geben, wofür Sie es verwenden? – Vaeb

Verwandte Themen