Javascript regex parsing
I'm looking to parse some formatting out of a field using javascript. My rule is catching some extra things which I need to fix. The regex is:
/[\((\)\s)-]/g
This regex is properly cleaning up: (123) 456-7890
the problem I'm having is that it is also removing all spaces rather than just spaces following a closing parentheses. I'm no expert in regex but it was my understanding that (\)\s)
would only remove the closing parentheses and space combo. What would the correct regex look like? It needs to remove all parentheses and dashes. Also, only remove spaces 开发者_如何学Goimmediately following a closing parentheses.
The outcomes I would like are such.
The replace method i am using should work as such
var str = mystring.replace(/[\((\)\s)-]/g, '');
(123) 456-7890
should become 1234567890
which is working.
leave me alone
should stay leave me alone
the issue is that it is becoming leavemealone
This will do the job:
var str = mystring.replace(/\)\s*|\(\s*|-/g, '');
Explanation of the regex:
\)\s* : Open parenthesis followed by any number of whitespace
| : OR
\(\s* : Close parenthesis followed by any number of whitespace
| : OR
- : Hyphen
Since parenthesis are regex-metacharacters used for grouping they need to be escaped when you want to match them literally.
Placing everything in brackets ([]
) creates a class of characters to match anywhere in the input. Taking your requirements literally ("remove all parentheses, dashes and spaces immediately following a closing parentheses"):
"(123) 456-789 0".replace(/\)[\(\)\s-]+/g, ")")
Output:
"(123)456-789 0"
This matches (essentially) the same character class, but specifies that these characters immediately follow a closing parenthesis.
You could use lookbehind to ensure that there is a paranthesis or something else preceding the space:
(?<=\))\s
------------ OLD ANSWER ----------
If you want to remove all paranthesis, dashes and spaces, you would go with something like this:
/[\s-\(\)]+/g
[something] - would look for anything that is in the brackets (letters s, o, m, e, t, h, i, n, g).
\s = white space
( = paranthesis
) = paranthesis
+ = at least one or more occurance of what is preceding it (which would be paranthesis, white space and dashes)
精彩评论