I don't think you can do it in another way than by checking for each letter, but that doesn't make it any worse.
Simply chain your .replace
functions like so:
result = string.replace(/Ά|Α|ά/g,'α')
.replace(/Έ|Ε|έ/g,'ε')
.replace(/Ή|Η|ή/g,'η');
// & so on...
Or if you rather loop over it, which you presumably do if you have greater amounts of characters to check against,and which is also better for code maintainability, store the character matches in an array of objects/ arrays. Eg. with an object:
var cvtValues = [ /* from = chars to convert; to = conversion output */
{from:['Ά','Α','ά'], to: 'α'}
{from:['Έ','Ε','έ'], to: 'ε'}
{from:['Ή','Η','ή'], to: 'η'}];
/* loop over all from-to containers */
for ( var i = 0; i < cvtValues.length; i++ ) {
/* loop over all characters in the 'from' array & replace them with 'to' value*/
for ( var x = 0; x < cvtValues[i].from.length; x++ ) {
string = string.replace(new RegExp(cvtValues[i].from[x],'g'), cvtValues[i].to);
/* You could assign this to another variable, eg. result if you wated */
}
}