Quantcast
Channel: Adobe Community : All Content - FrameMaker Scripting
Viewing all articles
Browse latest Browse all 888

Regular expression problem

$
0
0

Dear friends,

In my script i have some sections which test the content of an edit field before it is processed further.

Things like the following work perfectly:

var re_Def = /#[A-Za-z][A-Za-z0-9_]+/;          // valid variable name ?
items = ["#correct", "notcorrect", "#This_is4", "#thisIs", "@something", "#ALLOK", "", ];
// search    0            -1          -1!!        -1!!          -1        -1!!     -1      <--- incorrect method
// test    true         false         true        true        false       true    false    <--- correct method
for (var j = 0; j < items.length; j++) {  var item = items[j];  alert ("'" + item + "' ==> " +  item.search(re_Def) + "\n" + re_Def.test(item));
}
var re_Def = /(\[ROW +\d+\]|\[COL +\d+\]|\[CELL +\d+, +\d+\]|Left *\(\d*\)|Right *\(\d*\)|Above *\(\d*\)|Below *\(\d*\))/;
items = ["[ROW 17]", "[Row n]", "[ROW n]", "[CELL 3, 9]", "[CELL 3 9]", "Abbove()", "Right(3)"];
// result  true        false      false         true         false        false         true   
for (var j = 0; j < items.length; j++) {  alert ("'" + items[j] + "' ==> " +  re_Def.test(items[j]));
}

 

But the following always return false, independly of the content of the string item:

var re_Def = /{[EFJ]\d*}|{I}/;    // valid format def?
var item = "{E27}";
var result = re_Def.test(item);
alert (result);                   // false !!

 

RegEx Buddy tells me, that
- the REGEX is correct
- the result should be true, not false

- The verbose defintion of the RegEx is:
Match either the regular expression below (attempting the next alternative only if this one fails) «{[EFJ]\d*}»
   Match the character “{” literally «{»
   Match a single character present in the list “EFJ” «[EFJ]»
   Match a single digit 0..9 «\d*»
      Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
   Match the character “}” literally «}»
Or match regular expression number 2 below (the entire match attempt fails if this one fails to match) «{I}»
   Match the characters “{I}” literally «{I}»

 

Unrecognised typo? Faulty method test?

Results are wrong as soon as i use character list [...] - but look at the first code block: there are also character lists which are handled correctly.


Viewing all articles
Browse latest Browse all 888

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>