2017-09-11 11 views
0

私はこのコードを持っており、それを与える文字列に基づいて真または偽を返す必要があります。 これは動作しない唯一の例です。文字列の特定のインデックスに括弧が存在するかどうかを確認するにはどうすればよいですか?あなたのコードに基づいて文字列の特定の場所にかっこがないかどうかを確認するにはどうすればよいですか?

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

適切な正規表現を使用してください。ルールは何ですか? –

+0

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

+0

検索値パラメータなしで 'str.indexOf()'を使用しています。メソッドが動作するために必要です。 –

答えて

0

私はあなたがこのような何かを探しているかもしれないと思う:正規表現で

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

^$を開始し、文字列の末尾にマッチします。 \d+は1つ以上の数字と一致します。余分なかっこはキャプチャグループを形成し、置換グループでは$1として使用されます。

RegExpsを使用して作業を行う方が良いかもしれませんが、厳密な要件を知らなくても正確にするのは難しいでしょう。 RegExpの構文についてもっと学ぶことを強くお勧めします。

あなたは文字通り「ブラケットが特定のインデックスに存在する」かどうかを知りたい場合はその後、あなただけ使用することができます。

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

文字列内の特定のインデックスの括弧があるかどうかを確認するには:

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

任意のブラケットは全く文字列であるかどうかを確認するには、次の

/[()]/.test(str)

特定のブラケットタイプ(例:開いているが閉じていない)正規表現から他の1つ(例えば、閉じている)を削除する。

+0

それは私のために働いていません –

+0

どのようにそれを使用しようとしていますか?あなたは私があなたがそれを使用しているものの例を教えてくれますか? – Vaeb

関連する問題