Regular expressions are a powerful tool in JavaScript that allows developers to search for patterns within strings. These patterns can be specified using a combination of characters and special symbols, and can be used to extract specific information from a string. In this article, we will explore how to use regular expressions to extract numbers that are next to words in a string.
To begin, let's take a look at an example string: "The price of the product is $100.50." Our goal is to extract the number 100.50 from this string.
First, we need to define our regular expression. In JavaScript, regular expressions are denoted by enclosing them in forward slashes (/). Our regular expression will consist of three parts: a word boundary (\b), a number (\d), and a decimal point (\.). The word boundary ensures that we only match numbers that are next to words, and not part of a larger number. The \d represents any digit, and the \. represents a decimal point.
Our regular expression, therefore, will look like this: /\b\d\./
Next, we need to use the match() method on our string to search for this pattern. This method takes in the regular expression as an argument and returns an array containing all the matches found. In our case, we only have one match, which is the number 100.50.
Let's see how this works in code:
```javascript
let str = "The price of the product is $100.50.";
let regex = /\b\d\./;
let result = str.match(regex);
console.log(result); // Output: ["100."]
```
As you can see, the match() method returns an array with the matched number inside it. However, we still have the decimal point attached to our number. To extract just the number, we can use the replace() method. This method allows us to replace a specified part of a string with a new value. In our case, we want to replace the decimal point with an empty string, effectively removing it from our number.
Let's take a look at the code:
```javascript
let str = "The price of the product is $100.50.";
let regex = /\b\d\./;
let result = str.match(regex);
console.log(result[0].replace('.', '')); // Output: "100"
```
Now we have successfully extracted the number 100 from our string. But what if we have multiple numbers next to words in a string? Let's take a look at a more complex example:
```javascript
let str = "There are 3 apples and 2 oranges in the basket.";
let regex = /\b\d\./g; // Note the 'g' flag, which means global search
let result = str.match(regex);
console.log(result); // Output: ["3.", "2."]
```
In this case, we have used the global search flag (g) to find all matches in the string. The match() method now returns an array with both numbers extracted. To get just the numbers without the decimal points, we can use the map() method to iterate through the array and replace the decimal points with an empty string.
```javascript
let str = "There are 3 apples and 2 oranges in the basket.";
let regex = /\b\d\./g;
let result = str.match(regex).map(num => num.replace('.', ''));
console.log(result); // Output: ["3", "2"]
```
And there you have it! We have successfully extracted numbers next to words in a string using regular expressions and JavaScript.
In conclusion, regular expressions provide a powerful and efficient way to search for patterns in strings. By using a combination of characters and special symbols, we can easily extract specific information from a string. In our case, we used regular expressions to extract numbers next to words, but the possibilities are endless. So next time you need to extract data from a string, don't forget to harness the power of regular expressions.