JavaScript RegExp Quantifiers

  • Thread starter Thread starter Nathan Sokalski
  • Start date Start date
N

Nathan Sokalski

I have the following script that I am using to test some JavaScript RegExp
code:

function RE()
{
var testing1=new RegExp("[.]*");
var testing2=new RegExp("[.]{0,}");
var testing3=new RegExp("[.]+");
var testing4=new RegExp("[.]{1,}");
window.alert(testing1.test("ab")+"\n"+testing2.test("ab")+"\n"+testing3.test("ab")+"\n"+testing4.test("ab"));}When this script is run, the window.alert contains the following results:truetruefalsefalseThe the first two trues make since, but why are the falses false? Thequantifiers in the RegExp, if I understand correctly, say it should beallowed to have 1 or more characters (other than newlines and lineterminators), and I know that 'a' and 'b' are not newlines or lineterminators, and "ab" is more than 1 character. I am using Internet Explorer6.0. Is this a bug in IE? Am I doing something else wrong? Any help would beappreciated. Thanks.--Nathan (e-mail address removed)://www.nathansokalski.com/
 
Nathan said:
I have the following script that I am using to test some JavaScript RegExp
code:

function RE()
{
var testing1=new RegExp("[.]*");
var testing2=new RegExp("[.]{0,}");
var testing3=new RegExp("[.]+");
var testing4=new RegExp("[.]{1,}");
window.alert(testing1.test("ab")+"\n"+testing2.test("ab")+"\n"+testing3.test("ab")+"\n"+testing4.test("ab"));}When this script is run, the window.alert contains the following results:truetruefalsefalseThe the first two trues make since, but why are the falses false? Thequantifiers in the RegExp, if I understand correctly, say it should beallowed to have 1 or more characters (other than newlines and lineterminators), and I know that 'a' and 'b' are not newlines or lineterminators, and "ab" is more than 1 character. I am using Internet Explorer6.0. Is this a bug in IE? Am I doing something else wrong? Any help would beappreciated. Thanks.--Nathan (e-mail address removed)://www.nathansokalski.com/

Inside a set, the period doesn't mean "any character except newline", it
just means a period.

testing3.test("ab.") will return true, as there is a period in the string.


The testing1 and testing2 patterns are equivalent, and also equivalent
with the pattern "\.*".

The testing3 and testing4 patterns are equivalent, and also equivalent
with the pattern "\.+".
 
Göran Andersson wrote on 11-6-2008 :
Nathan said:
I have the following script that I am using to test some JavaScript RegExp
code:

function RE()
{
var testing1=new RegExp("[.]*");
var testing2=new RegExp("[.]{0,}");
var testing3=new RegExp("[.]+");
var testing4=new RegExp("[.]{1,}");

window.alert(testing1.test("ab")+"\n"+testing2.test("ab")+"\n"+testing3.test("ab")+"\n"+testing4.test("ab"));}When
this script is run, the window.alert contains the following
results:truetruefalsefalseThe the first two trues make since, but why are
the falses false? Thequantifiers in the RegExp, if I understand correctly,
say it should beallowed to have 1 or more characters (other than newlines
and lineterminators), and I know that 'a' and 'b' are not newlines or
lineterminators, and "ab" is more than 1 character. I am using Internet
Explorer6.0. Is this a bug in IE? Am I doing something else wrong? Any help
would beappreciated. Thanks.--Nathan
(e-mail address removed)://www.nathansokalski.com/

Inside a set, the period doesn't mean "any character except newline", it just
means a period.

testing3.test("ab.") will return true, as there is a period in the string.


The testing1 and testing2 patterns are equivalent, and also equivalent with
the pattern "\.*".

The testing3 and testing4 patterns are equivalent, and also equivalent with
the pattern "\.+".

And to add to this:
[.]* means: a period, *zero* or more times. And "ab" contains zero
periods.
[.]+ means: at least *one* period, so "ab" does not match.

Hans Kesting
 
Back
Top