2016-08-24 11 views
0

私は試合方程式正規表現の後ろに正規表現がマッチし、一致数が増えていますか?

function start() { 
 
    
 
    var str = "10x2+10x+10y100-20y30"; 
 
    var match = str.match(/([a-z])=?(\d+)/g);//find the higher value of power only and also print the power value only withput alphapets).i need match like "100" 
 
    
 
    var text; 
 
    if(match < 10) 
 
    {text = "less 10";} 
 
    else if(match == "10") 
 
    {text == "equal";} 
 
    else 
 
    {text ="above 10";} 
 
    
 
    document.getElementById('demo').innerHTML=text; 
 
} 
 
start();
<p id="demo"></p>

を持っている私は、電力値と一致する必要があり、また、唯一のより高い電力値を抜け出します。例えば、10x2+10y90+9x91 out --> "90"。 myとcorretの正規表現が適切な形式と一致しません。ありがとう

答えて

0

変数matchには、正規表現に一致するすべての累乗が含まれます。あなたは最高のものを見つけるためにそれらを反復する必要があります。

function start() { 
 
    
 
    var str = "10x2+10x+10y100-20y30"; 
 
    var match = str.match(/([a-z])=?(\d+)/g);//find the higher value of power only and also print the power value only withput alphapets).i need match like "100" 
 

 
    var max = 0; 
 
    for (var i = 0; i < match.length; i++) { // Iterate over all matches 
 
    var currentValue = parseInt(match[i].substring(1)); // Get the value of that match, without using the first letter 
 
    if (currentValue > max) { 
 
     max = currentValue; // Update maximum if it is greater than the old one 
 
    } 
 
    } 
 
    
 
    document.getElementById('demo').innerHTML=max; 
 
} 
 
start();
<p id="demo"></p>

+0

を私の上記のコード、より高い電力で

私は少し動作するようにあなたのコードを取り、それを修正しました値「100」ですが、あなたr code out is '30' – prasad

+0

@prasad申し訳ありません、私は' var currentValue = parseInt(match [i] .substring(1)); '行で' parseInt(); 'を使うのを忘れていました。それは修正され、今は動作します。 –

0

これを試してみてください:

const str = '10x2+10x+10y100-20y30' 
 
    ,regex = /([a-z])=?(\d+)/g 
 
const matches = [] 
 
let match 
 
while ((match = regex.exec(str)) !== null) { 
 
    matches.push(match[2]) 
 
} 
 
const result = matches.reduce((a, b) => Number(a) > Number(b) ? a : b) 
 
console.log(result)

+0

あなたは説明できますか? – prasad

関連する問題