Hi Dominik, I also use other regex for other text boxes and they have
double-slashes and they work.
For example I have another textbox which validates against this regex:
public static final String REGEX_PINCODE = "[\\w]{12}";
That one has no problem in IE or Firefox.
I tried changing the original problematic regex to this (to avoid
double slash altogether):
^(?=.*[0-9])(?=.*[a-z]).{8,15}$
But the problem still remains for IE. I don't have a lot of insight
into this issue. I just installed the DebugToolbar, and now I will re-
compile it all with readable JavaScript to see if I can spot anything,
but I'm drawing a blank on this one. I'm not much of a javascript
maven. If anyone has any insight, I'd be thrilled to hear it.
Regards,
Davis
On Aug 14, 10:57 am, Dominik Steiner
<[email protected]> wrote:
> Hi davis,
>
> I'm using the following regex to match addresses in the format of 123
> west road
>
> public static final String ADDRESS_REGEX =
> "[0-9]+\\s*\\D+";
>
> and it works fine on IE too. Note the double slash before s and D
>
> So I don't think that the double slash is the problem.
>
> HTH
>
> Dominik
>
> davis schrieb:
>
> > I think I figured out the problem, using an online regex tester for
> > JavaScript:http://www.pagecolumn.com/tool/regtest.htm
>
> > Note that the regex translation in JavaScript has a double backslash
> > to escape the \d special character. This fails standard regex test
> > for JavaScript for inputs like abcd1234.
>
> > ^(?=.*\\d)(?=.*[a-z]).{8,15}$
>
> > If you replace the regex text with:
>
> > ^(?=.*\d)(?=.*[a-z]).{8,15}$
>
> > Then it works for JavaScript. However, Java requires the character to
> > be escaped. I'm guessing Firefox simply interprets \\d as \d, which
> > is why it passes, but IE is not as forgiving. This seems like a bug
> > in the GWT compiler. It seems to me it should take the \\d and
> > translate it to \d when compiling from Java to JavaScript.
>
> > Can someone confirm?
>
> > Regards,
> > Davis
>
> > On Aug 14, 9:44 am, davis <[email protected]> wrote:
> > > Hi, I have the following Java code to validate a password box.
> > > Basically it checks that the password can't be null, is between 8-15
> > > characters, and must contain both numbers and letters.
>
> > > public static boolean validatePassword(PasswordTextBox box, Label
> > > errorLabel) {
> > > String text = box.getText();
> > > if(text.isEmpty()) {
> > > ValidatorUtil.onFailure(box,
> > > custom.passwordMayNotBeNull(),
> > > errorLabel);
> > > return false;
> > > } if(text.length() < 8 || text.length() > 15) {
> > > ValidatorUtil.onFailure(box,
> > > custom.passwordHasInvalidLength(8, 15,
> > > text.length()), errorLabel);
> > > return false;
> > > } if(!text.matches(CustomMessages.REGEX_PASSWORD)) {
> > > ValidatorUtil.onFailure(box,
> > > custom.passwordHasInvalidFormat(),
> > > errorLabel);
> > > return false;
> > > }
> > > return true;
> > > }
>
> > > This works fine in Firefox, but it does not work in IE. The
> > > JavaScript compiles down to this for IE8:
>
> > > function validatePassword(box, errorLabel){
> > > var text, matchObj;
> > > text = $getPropertyString(box.element, 'value');
> > > if (!text.length) {
> > > setStyleName(box.element, 'validationFailedBorder', true);
> > > ($clinit_114() , errorLabel.element).innerText = 'You must provide
> > > a password.';
> > > return false;
> > > }
> > > if (text.length < 8 || text.length > 15) {
> > > onFailure_1(box, 'Sorry, your password must be between 8 and 15
> > > characters long (you have ' + text.length + ' characters).',
> > > errorLabel);
> > > return false;
> > > }
> > > if (!(matchObj = (new RegExp('^(?=.*\\d)(?=.*[a-z]).{8,15}$')).exec
> > > (text) , matchObj == null?false:text == matchObj[0])) {
> > > setStyleName(box.element, 'validationFailedBorder', true);
> > > ($clinit_114() , errorLabel.element).innerText = 'Sorry, your
> > > password must contain both letters [a-z] and numbers [0-9].';
> > > return false;
> > > }
> > > return true;
>
> > > }
>
> > > The behavior is a bit odd. It passes the text.length checks, but then
> > > fails the regex expression (which also has length checks with {8,15}.
> > > It always prints: 'Sorry, your password must contain both letters [a-
> > > z] and numbers [0-9].' in IE, but in Firefox, it works fine...for
> > > inputs like this:
>
> > > abcd1234 <- valid password, 8 characters with letters and numbers
>
> > > Even more strange is the fact that if I enter a password with 12
> > > characters with both letters and numbers, IE passes, like this:
>
> > > abcd1234abcd
>
> > > But if I enter only 11 characters, it fails:
>
> > > abcd1234abc
>
> > > Any clues on what is wrong here?
>
> > > Regards,
> > > Davis
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---