Regex in handlebar to get everything after the first whitespace doesn't work during flow execution
For a name like "John B Doe", I need first name to be "John" and last name to be "B Doe".
While testing the handlebars statement in Dev playground the below statements work correctly.
{{regexMatch BuyerName "([^\s]+)"}} --> firstname
{{regexMatch BuyerName "(?<=\s).*"}}-->lastname
But when implemented in mapping and when flow is run, it throws invalid_handle_bar_expression
"Could not compile handle bar \"{{regexMatch BuyerName \"(?<=\\s).*\"}}\" because \"Invalid quantifier ?\" .Please correct and retry"
Why is it not able to compile when it worked in playground. Please help
-
Hi Ugene Jude -
I created a Support ticket for this issue. You should receive an email with the information.
Thanks!
Kate
0 -
Thank you Kate
0 -
Hi Ugene -
I hope you're doing well.
Did you happen to come across a solution to this one?
- Merik
0 -
Here's where I landed:
{{#compare (regexSearch VendorName " ") ">" -1}}{{trim (substring VendorName (regexSearch VendorName " "))}}{{else}}.{{/compare}}
Explanation:
(regexSearch VendorName " ")
- returns zero-indexed position of first space
- returns -1 when string does not contain space
(substring VendorName (regexSearch VendorName " "))
- returns substring starting with (inclusive) first space
- it should be noted that I've already trimmed my VendorName on earlier export
- there would be issues if VendorName had leading spaces
- namely, this output intended to be Last Name would be equivalent to First Name
{{trim (substring VendorName (regexSearch VendorName " "))}}
- removes whitespace present at start or end of substring
{{else}}.{{/compare}}
- returns period in scenario where string does not contain a space
1 -
Merik Ducker Thank you for this workaround and explanation!! I ran into the same issue, and was able to get around it with your method. You just saved me a ton of time.
For anyone else wondering, the reason that this error occurs is because Javascript does not support lookahead / lookbehind, and "?" is involved in the process. You will need to find a different way to structure your formula that avoids lookaheads/lookbehinds.
0
Please sign in to leave a comment.
Comments
5 comments