views:

217

answers:

3

I have a form generator that uses (perl compatible) regexes for ther backend validation. Since the whole form is being dynamically generated it was fairly trivial to add a bit of jquery and then use the same regexes to validate on the client side pre submission.

However, some of the time the regexes don't behave themselves in Javascript, I am suspecting that either they are not being properly escaped, or contain illegal characters etc. Anyone knows a way of making sure that the same regex will work on both platforms?

+1  A: 

You could use the free trial period of RegexBuddy. (I think there's a free trial, but if not, you can get your money back anyway.) It allows you to input a regular expression, test it out, and convert it to many target languages. This may help you pinpoint the bit of information you need.

John Fisher
A: 

PHP preg_* functions and JavaScript both use Perl-compatible regular expressions. In principle, they should support the same set of regular expressions.

You really should give some examples of what is not working, because it is very likely that your problem is due to escaping/string handling.

rix0rrr
JavaScript don’t use PCRE.
Gumbo
Well I wasn't aware that there's a C library with that name, and I'm not saying browsers use that particular library, but the regular expressions in JavaScript are definitely Perl-compatible.
rix0rrr
No they aren’t. One example: JavaScript doesn’t support look-behind assertions. For more examples, see http://www.regular-expressions.info/javascript.html
Gumbo
+2  A: 

Read about specific implementation details for Regular Expressions in Javascript.

JavaScript implements Perl-style regular expressions. However, it lacks quite a number of advanced features available in Perl and other modern regular expression flavors

For one thing, the / character denotes the beginning and end of a regex in Javascript, so you might need to escape it, but that depends on how you're instantiating the regular expression in Javascript (with the literal notation or the RegExp class).

Rahul