diff --git a/src/applications/project/remarkup/ProjectRemarkupRule.php b/src/applications/project/remarkup/ProjectRemarkupRule.php --- a/src/applications/project/remarkup/ProjectRemarkupRule.php +++ b/src/applications/project/remarkup/ProjectRemarkupRule.php @@ -40,12 +40,7 @@ $never_edge = '.'; return '(?:'. - // Short project name with one or two characters not in $never_edge or - '[^'.$never_edge.$never.']{1,2}|'. - // A single character not in $never or $never_edge, - // then any number of characters not in $never then a single character - // not in $never or $never_edge - '[^'.$never_edge.$never.'][^'.$never.']+[^'.$never_edge.$never.']'. + '[^'.$never_edge.$never.'](?:[^'.$never.']*[^'.$never_edge.$never.'])?'. ')'; } diff --git a/src/applications/project/remarkup/__tests__/ProjectRemarkupRuleTestCase.php b/src/applications/project/remarkup/__tests__/ProjectRemarkupRuleTestCase.php --- a/src/applications/project/remarkup/__tests__/ProjectRemarkupRuleTestCase.php +++ b/src/applications/project/remarkup/__tests__/ProjectRemarkupRuleTestCase.php @@ -134,7 +134,19 @@ ), ), ), - + // This test case failed in an old version of the regex + '#js-draw' => array( + 'embed' => array(), + 'ref' => array( + 'offset' => 1, + 'id' => 'js-draw' + ), + ), + // Don't match leading dots for consistency with trailing ones + '#.js' => array( + 'embed' => array(), + 'ref' => array() + ), ); foreach ($cases as $input => $expect) {