Thursday, May 9, 2024
 Popular · Latest · Hot · Upcoming
122
rated 0 times [  123] [ 1]  / answers: 1 / hits: 21262  / 15 Years ago, fri, may 1, 2009, 12:00:00

Since I started writing this question, I think I figured out the answers to every question I had, but I thought I'd post anyway, as it might be useful to others and more clarification might be helpful.



I was trying to use a regular expression with lookahead with the javascript function split. For some reason it was not splitting the string even though it finds a match when I call match. I originally thought the problem was from using lookahead in my regular expression. Here is a simplified example:



Doesn't work:



aaaaBaaaa.split((?=B).);


Works:



aaaaBaaaa.match((?=B).);


It appears the problem was that in the split example, the passed string wasn't being interpreted as a regular expression. Using forward slashes instead of quotes seems to fix the problem.



aaaaBaaaa.split(/(?=B)./);


I confirmed my theory with the following silly looking example:



aaaaaaaa(?=B).aaaaaaa.split((?=B).);


Does anyone else think it's strange that the match function assumes you have a regular expression while the split function does not?


More From » regex

 Answers
10

String.split accepts either a string or regular expression as its first parameter. The String.match method only accepts a regular expression.



I'd imagine that String.match will try and work with whatever is passed; so if you pass a string it will interpret it as a regular expression. The String.split method doesn't have the luxury of doing this because it can accept regular expressions AND strings; in this case it would be foolish to second-guess.






Edit: (From: JavaScript: The Definitive Guide)



String.match requires a regular expression to work with. The passed argument needs to be a RegExp object that specifies the pattern to be matched. If this argument is not a RegExp, it is first converted to one by passing it to the RegExp() constructor.


[#99614] Monday, April 27, 2009, 15 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
xavier

Total Points: 711
Total Questions: 91
Total Answers: 121

Location: Gabon
Member since Sat, Jul 25, 2020
4 Years ago
;