Check Accents and Normal Text with Regular Expression in Javascript [closed] - javascript

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 days ago.
Improve this question
First of all, here is my code snippet:
const Reg = new RegExp("nmElk and the pol (nmélk et les pol)","ig");
console.log(Reg.test("nmElk and the pol (nmélk et les pol)")); //false
The result of the above codes comes out false, but when I separate them like below to test them it comes out true.
const Reg1 = new RegExp("nmElk and the pol","ig");
const Reg2 = new RegExp("(nmélk et les pol)","ig");
console.log(Reg1.test("nmElk and the pol")); //true
console.log(Reg2.test("(nmélk et les pol)")); //true
I have no idea which parts are wrong and confused.
I want to make the regular expression comes out as the true result for the first code.
Anything I should revised or should I use other approaches?
Thanks in advance :)

Parentheses have a special meaning in a regular expression. If you want literal parentheses, then you need to escape them with a backslash.
In case you build your regex using the RegExp function and a string literal, then you need to escape that backslash also -- with another backslash:
const Reg = new RegExp("nmElk and the pol \\(nmélk et les pol\\)","ig");
console.log(Reg.test ("nmElk and the pol (nmélk et les pol)")); //true
However, since there is nothing dynamic to your regex, it would be more appropriate to use a regex literal:
const Reg = /nmElk and the pol \(nmélk et les pol\)/ig;
console.log(Reg.test ("nmElk and the pol (nmélk et les pol)")); //true

Related

How to match numbers followed by any combination of special characters and spaces 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 last year.
Improve this question
I am a newbie with regex and I am having trouble trying to match some parts of a string so I can remove it from a piece of entered text. I want to match digits followed by a sequence of a combination of any special characters + spaces. There could also be non Latin characters that should not be removed inside the sequence (for example Ñ).
for example inputted it may look like:
11#- &-.text
11 $ab*cÑ .somewords123
outputted I would expect
text
abcÑsomewrods123
I am using javascript replaceall method with regex to find it. So far I have something basic like this regex
.replaceAll(/\d+(\#|\s)+(\-|\$)+(\s|\&)+(\&)+(\-)+(\.)/g, '');
Is there a way to write this more efficiently so that it captures any special characters since the text can contain more different special chars than in the examples? Or is this a situation better handled with pure JS?
Thanks in advance for your help.
You should ether have blacklist of what you calling special characters, or whitelist of the allowed characters.
for blacklist it gonna look like:
const blacklist = "!##$%^&*()_+.";
const exampleInputs = [
"te&*st+_1.",
"te%%st^*2",
"t###es*(*(*t3"
];
function removeSpecialChars(str) {
const reg = new RegExp(`[${blacklist}]`, "g");
return str.replace(reg, "");
}
exampleInputs.forEach(input => console.log(removeSpecialChars(input)));
for whitelist it gonna looks like:
const whitelist = "0-9a-zA-Z";
const exampleInputs = [
"te&*st+_1.",
"te%%st^*2",
"t###es*(*(*t3"
];
function removeSpecialChars(str) {
const reg = new RegExp(`[^${whitelist}]`, "g");
return str.replace(reg, "");
}
exampleInputs.forEach(input => console.log(removeSpecialChars(input)));

Remove all non numeric characters except first + operator [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 3 years ago.
Improve this question
I want to remove all non-numeric characters except the first + operator.
So + operator should show at the first.
For example,
+614a24569953 => +61424569953
+61424569953+ => +61424569953
Maybe,
(?!^\+)[^\d\r\n]+
replaced with an empty string would simply do that.
The first statement,
(?!^\+)
ignores the + at the beginning of the string, and the second one,
[^\d\r\n]+
ignores digits, newlines and carriage returns in the string.
RegEx Demo
Test
const regex = /(?!^\+)[^\d\r\n]+/g;
const str = `+614a24569953`;
const subst = ``;
const result = str.replace(regex, subst);
console.log(result);
If you wish to simplify/update/explore the expression, it's been explained on the top right panel of regex101.com. You can watch the matching steps or modify them in this debugger link, if you'd be interested. The debugger demonstrates that how a RegEx engine might step by step consume some sample input strings and would perform the matching process.
RegEx Circuit
jex.im visualizes regular expressions:
Try
t1="+614a24569953"
t2="+61424569953"
t3="6142+4569a9+53"
re = /(?<=\+.*)[^0-9]/g
console.log( t1.replace(re, '') );
console.log( t2.replace(re, '') );
console.log( t3.replace(re, '') );

Replace comparation with capital letters on Javascript [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 6 years ago.
Improve this question
I don't know how to replace with capital letters in this input text, for example I want to put on bold the letters which they are de same on the input, but if is capital letters doesn't put on bold
this is my line of code $texto_option = $texto_option.replace($(input).val(),'<b>'+$(input).val()+'</b>');
Generate a regular expression that ignores the letters' case:
var search = $(input).val();
var re = new RegExp(search, "i");
$texto_option = $texto_option.replace(re, "<b>$&</b>");
This is an easy answer. But keep in mind that your input has to be sanitized, as some characters are control characters for regular expressions too:
search = search.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");

Get regex rules for a capture group [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 7 years ago.
Improve this question
I am looking for a method to get the regex rules, for a capture group.
So if I had: /(\w) (\d)/ I would want $1 = /\w/ and $2 = /\d/.
Is there a method for this?
Provided that the regex is valid and no nested groups are used, then you can try this out.
var arr = (regex + "").match(/\(.*?\)/g).map(function(rule){
return rule.replace(/[()]/g, "");
});
Now, arr[0] will have rule of group1, arr[1] will be group2 and so on.
Although I don't know of any direct way to do this on a regex rule given by /(rule1)(rule2)/ you could build the regex rule using strings and specify your grouping in different strings.
var group1 = '([A-Za-z]+)',
group2 = '(\\d+)',
r = new RegExp(group1+group2);
r.test('hello1234');
To get the groups from a regex string you could run a regex on that regex string to extract the groups. If your regex string is "(\w+)(\d+)" then you'd have a regex to extract the groups as /(\([^\)\))+/

Capturing everything in a string with a regular expression [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
So I have a string that will have basically any kind of text in it and I want to capture all the text with regular expression and replace it.
var img_url = "http://grfx.domain.com/photos/dir/school/dir/m-dir/auto_original/123456.jpeg?123456";
img_url.replace(/regexp/,newvalue);
Just trying to capture everything in the img_url var and replace it.
Thanks!
Well, if you want to replace everything, you don't need regex. Simply write:
img_url = newvalue;
If you are really determined to do this with a regular expression, this could help:
img_url = img_url.replace(/.*/, newvalue);
If you're reassigning, just use =
If you want to replace all matches in one go, use the g flag, in which case this question is a duplicate of this post
If that expression needs to be dynamic:
var expr = new RegExp(replaceVar,'gi');//globally, and case-insensitively
var newUrl = oldUrl.replace(expr,replacement);
Note that, here, all back-slashes like you'd use for \b have to be escaped, too: \\b and \\/ for forward slashes. and \\\\ for an escaped backslash

Categories

Resources