Need a regular expression to match a substring n times [closed] - javascript

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 9 years ago.
The community reviewed whether to reopen this question 7 months ago and left it closed:
Original close reason(s) were not resolved
Improve this question
The regex .*{n} will match any single character n times, but I need to match any single substring n times.
How do I do that?

To match the substring "foo" 3 times (for example "foofoofoo"), you could use the following:
(foo){3}
Or with a non-capturing group:
(?:foo){3}
As a side note, .*{n} wouldn't do what you think it does. The . will match any character, .* will match any number of any characters, and .*{n} will vary depending on the implementation but it will either be an invalid regex, be equivalent to .*, or match any number of any characters followed by the literal string '{n}'.

Try
(your sub string here){n}
e.g.
(cats){4}

try
/(\w+)\1{n-1}/
Example:
"abcbcbca".match(/(\w+)\1{2}/) if you wish to find bc being repeated 3 times.

If you are trying to match a given string repeated n times, just do (string){n}.

Related

Regex: 15 integers with a maximum of two decimals, excluding 0 [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
I am trying to create a custom validation with regex but cant find the right one.
15 integers max, 2 decimals max. 0 is not allowed.
Im usign this regex at this moment: /^(?:\d{1,15}(?:[.,]\d{0,2})?|[.,]\d{1,2})$/
but that one stills allows a 0
Valid cases:
0,01
123,1
1234,50
123456789012345,20
invalid cases:
0
-1
13,421
123,223
1234567890123456
The below pattern matches a digit between 1 and 15 times, followed by an optional group comprising a comma then either one or two digits. The pattern matches the entire string (from start to end) due to the anchors. It begins with a negative lookahead to ensure the entire string is not just the character "0".
(?!^0$)^\d{1,15}(?:,\d{1,2})?$
It matches all valid cases and no invalid cases from your question.
Try it out here: https://regex101.com/r/kB8jXt/1

regex creation with multiple conditions [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 1 year ago.
Improve this question
i need a regex that fits these conditions
may contain letters and numbers. numbers are optional but must contain at least 1 letter
at least 2 characters
can contain ONLY the "-" character of special characters. this is optional
must begin with a letter
no whitespace
no turkish characters
How should i create a regex query according to these conditions?
I would create a function like so:
function isGood(string){
return /^[a-z][a-z0-9-]+$/i.test(string);
}
console.log(isGood('This should return false'))
console.log(isGood('#no'));
console.log(isGood('Nice'));
console.log(isGood('a'));
console.log(isGood('a!'));
console.log(isGood('great'));
console.log(isGood('This-should-also-pass-the-test'));

Remove leading + or 00 from number using regex [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
I need to remove + or 00 from the beginning of a number in case they exist. So a number like +37253783478 would output 37253783478 and 0037253783478 would output 37253783478. What would the regex look like that matches this pattern?
EDIT: I've managed to remove the leading zeros using ^0+ but I can't figure out how to match both cases.
If I understand the requirement, the following will match both cases. Essentially, what you need to do is use the regex or operator |.
The following will remove all leading 0s
str.replace(/(^0+|^\+)/,'')
But if you just need to remove exactly two leading 0s, use this:
str.replace(/(^00|^\+)/,'')
And here it is in action on your examples:
let nums = ['+37253783478', '0037253783478', '0037253780478', '375378+0478'];
let replaced = nums.map(num => num.replace(/(^0+|^\+)/,''));
console.log(replaced);

Full-width Numbers convert to half-width Numbers in jQuery / JS [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
A would like to convert Full-width Numbers (e.g. 123) to half-width Numbers (e.g. 123). I found code do this in PHP but not in JS. Could anyone helps? Thanks.
function fullWidthNumConvert(fullWidthNum){
// Magic here....
....
return halfWidthNum;
}
Do a string .replace(), using a regular expression to match the characters in question. The callback in .replace()'s second argument can get the character code of the matched character and subtract from that to get the character code of the standard digit, then convert that back to a string.
function fullWidthNumConvert(fullWidthNum){
return fullWidthNum.replace(/[\uFF10-\uFF19]/g, function(m) {
return String.fromCharCode(m.charCodeAt(0) - 0xfee0);
});
}
console.log(fullWidthNumConvert("0123456789"));
console.log(fullWidthNumConvert("Or in the middle of other text: 123. Thank you."));
Using String Normalize MDN with "NFKC" as the Unicode Normalization Form
const str = "150721";
console.log(str.normalize('NFKC')); // 150721
https://www.unicode.org/charts/normalization/chart_Number-Decimal.html

help with regular expressions [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
this is my goal numbers from the three digits to 9 digits. for example
Valid options
175
1.250
14.365
145.985
1.562.745
17.487.984
999.999.999
Now this is the regular expression that i develop
/^\d{1,3}\.\d{1,3}\.\d{1,3}$/
My problem it's that this is accepting this values
176.57.117 <---- this is not valid value
176.257.7 <---- this is not valid value
176.257.17 <---- this is not valid value
Thanks for your help
UPDATE
I'm trying to make a regular expression that validates positive natural numbers from three digits to 9 digits and separates the thousand unit and the million unit with a point
/^\d{1,3}(\.\d{3}(\.\d{3})?)?$/
What you really want is 1 to 3 digits possibly followed by 1 or 2 additional sets of three digits. Your original reg-ex just said "3 sets of 1-3 digits" which isn't really what you want. It also would have failed to accept your first several valid examples since they had less than three sets of digits.
Just split the string for . and then check string length ... in each of array indexes (i think it will be more self explaining than regexp)

Categories

Resources