Я пытаюсь найти целую строку и все скобочные группы. Я хочу сделать это в строке:
contract var str = "contract CryptoGO is StandardToken, Babaika, Pisos, Banana { string public name; uint8 public decimals; string public symbol; string public version = 'H1.0'; uint256 public unitsOneEthCanBuy; uint256 public totalEthInWei; address public fundsWallet; function CryptoGOToken() { balances[msg.sender] = 1000000000000000000000000000; totalSupply = 1000000000000000000000000000; name = \"CryptoGO\"; decimals = 18; symbol = \"CGO\"; unitsOneEthCanBuy = 10000; fundsWallet = msg.sender; } function() payable{ totalEthInWei = totalEthInWei + msg.value; uint256 amount = msg.value * unitsOneEthCanBuy; if (balances[fundsWallet] < amount) { return; } balances[fundsWallet] = balances[fundsWallet] - amount; balances[msg.sender] = balances[msg.sender] + amount; Transfer(fundsWallet, msg.sender, amount); fundsWallet.transfer(msg.value); } function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); if(!_spender.call(bytes4(bytes32(sha3(\"receiveApproval(address,uint256,address,bytes)\"))), msg.sender, _value, this, _extraData)) { throw; } return true; }}";
Пример моего кода:
var str = "contract CryptoGO is StandardToken, Babaika, Pisos, Banana { string public name; uint8 public decimals; string public symbol; string public version = 'H1.0'; uint256 public unitsOneEthCanBuy; uint256 public totalEthInWei; address public fundsWallet; function CryptoGOToken() { balances[msg.sender] = 1000000000000000000000000000; totalSupply = 1000000000000000000000000000; name = \"CryptoGO\"; decimals = 18; symbol = \"CGO\"; unitsOneEthCanBuy = 10000; fundsWallet = msg.sender; } function() payable{ totalEthInWei = totalEthInWei + msg.value; uint256 amount = msg.value * unitsOneEthCanBuy; if (balances[fundsWallet] < amount) { return; } balances[fundsWallet] = balances[fundsWallet] - amount; balances[msg.sender] = balances[msg.sender] + amount; Transfer(fundsWallet, msg.sender, amount); fundsWallet.transfer(msg.value); } function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) { allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); if(!_spender.call(bytes4(bytes32(sha3(\"receiveApproval(address,uint256,address,bytes)\"))), msg.sender, _value, this, _extraData)) { throw; } return true; }}";
var re = /[^(//)]?\s?contract\s+([a-zA-Z0-9_\-]+)\s*is?\s+([a-zA-Z0-9_\-]+)\s*[, {]/ig;
var res
while ((res = re.exec(str)) != null) {
console.log(res);
}
Сейчас я имею вывод:
[
"contract CryptoGO is StandardToken,",
"CryptoGO",
"StandardToken"
]
А хочу получить следующий вывод:
[contract CryptoGO is StandardToken, Babaika, Banana {,
CryptoGO,
StandardToken,
Babaika,
Banana]
Как правильно переписать регулярное выражение, чтобы оно давало ожидаемый вывод?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не выполняется третье условие else ifПервые два работают корректно
Как при нажатии на кнопку (страницу уже зарендерина) создать элемент?