# Day 12 - Regex
## [Exercise:Solutions](#exercise-solutions)
- ### [Exercise:Level 1](#exercises-level-1)
- ### [Exercise:Level 2](#exercises-level-2)
- ### [Exercise:Level 3](#exercises-level-3)
#### [Home](../README.md) | [<< Day 11](./11_day_des_spreading.md) | [Day 13 >>](./13_day_consol_objmth.md)
## Exercise Solutions
### Exercises Level 1
1. Calculate the total annual income of the person from the following text. ‘He earns 4000 euro from salary per month, 10000 euro annual bonus, 5500 euro online courses per month.’
```js
// app.js
let text ="He earns 4000 euro from salary per month, 10000 euro annual bonus, 5500 euro online courses per month."
let pattern = /\d+/g
let numbers = text.match(pattern)
numbers = numbers.map(Number)
let montlySalary = numbers[0]
let bonus = numbers[1]
let montCourses = numbers[2]
console.log(`Annual income is ${(montlySalary*12) + (bonus) + (montCourses *12)}`)
```
2. The position of some particles on the horizontal x-axis -12, -4, -3 and -1 in the negative direction, 0 at origin, 4 and 8 in the positive direction. Extract these numbers and find the distance between the two furthest particles.
```js
// app.js
```
3. Write a pattern which identify if a string is a valid JavaScript variable
```js
// app.js
function isValidVariableName(str) {
// Birinci karakterin harf, alt çizgi veya dolar işareti olup olmadığını kontrol eden bir kalıp
var firstCharPattern = /^[a-zA-Z_$]/;
// Diğer karakterlerin harf, rakam, alt çizgi veya dolar işareti olup olmadığını kontrol eden bir kalıp
var otherCharPattern = /^[a-zA-Z0-9_$]*$/;
// Dizenin rezerve edilmiş bir kelime olup olmadığını kontrol eden bir dizi
var reservedWords = ["var", "let", "const", "function", "if", "else"];
// Dizenin boş olmadığını, birinci karakterin kalıpla eşleştiğini, diğer karakterlerin kalıpla eşleştiğini ve rezerve edilmiş kelimeler arasında olmadığını kontrol eder
return str && firstCharPattern.test(str) && otherCharPattern.test(str) && !reservedWords.includes(str);
}
console.log(isValidVariableName('21dzfgdf'))
```
### Exercises Level 2
1. Write a function called tenMostFrequentWords which get the ten most frequent word from a string?
```
let paragraph = `I love teaching. If you do not love teaching what else can you love. I love Python if you do not love something which can give you all the capabilities to develop an application what else can you love.`
```
```js
// app.js
function tenMostFrequentWords(paragraph) {
// Paragrafı kelimelere ayırırken noktalama işaretlerini ve büyük harfleri yok sayar
var words = paragraph.toLowerCase().replace(/[.,]/g, '').split(/\s/);
// Her kelimenin frekansını tutan bir nesne oluşturur
var freqMap = {};
words.forEach(function(word) {
// Kelime nesnede yoksa 0, varsa mevcut değerine 1 ekler
freqMap[word] = (freqMap[word] || 0) + 1;
});
// Nesneyi bir diziye dönüştürür ve frekansa göre azalan şekilde sıralar
var sorted = Object.entries(freqMap).sort(function(a, b) {
return b[1] - a[1];
});
// Sadece ilk 10 elemanı alır ve kelimeleri bir dizi olarak döndürür
return sorted.slice(0, 10).map(function(pair) {
return pair[0];
});
}
console.log( tenMostFrequentWords(paragraph))
```
### Exercises Level 3
1. Writ a function which cleans text. Clean the following text. After cleaning, count three most frequent words in the string.
#### [Home](../README.md) | [<< Day 11](./11_day_des_spreading.md) | [Day 13 >>](./13_day_consol_objmth.md)