const regex = new RegExp('#https://www.native-english.ru/grammar/english-nouns-plural
(?<![a-z]) #word boundary
(?: [a-z]+ [bcdfghjklmnpqrtvwzeoya]s
| [a-z]+ (?:[sc]h|[sxoiv])es
| children|men|women|mice|teeth|feet|geese|oxen|deer|sheep|swine
)
$', 'msgi')
const str = `area
areas
child
children
man
men
woman
women
mouse
mice
tooth
teeth
foot
feet
goose
geese
ox
oxen
deer
sheep
swine
cat
cats
bus
buses
moon
moones
class
classes
box
boxes
bush
bushes
inch
inches
match
matches
shelf
shelves
wive
wives
chief
chiefs
roof
roofs
safe
safes
army
armies
city
cities
employee
employees
day
days
toy
toys
boy
boys
hero
heroes
potato
potatoes
tomato
tomatoes
solo
solos
radio
radios
photo
photos
piano
pianos`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions