Получи похожую струну разряда остальных - PullRequest
0 голосов
/ 16 февраля 2009

интересно, не могли бы вы помочь мне с Javascript. У меня есть строка, которая является сообщением журнала, и я хочу извлечь раздел из этого журнала и отобразить его самостоятельно

например (имейте в виду, что раздел журнала не регистрозависим, и любая буква может быть любым регистром, также может быть помещена в любом месте внутри строки)

$ LOG: 08880xbpnd $ fhdsafidsfsd Д.Ф. SD FSD е SD FSD

это журнал оригиналов, я хочу захватить 08880xbpnd и избавиться от всего остального? Как это можно сделать в JavaScript?

редактировать

Если это поможет, у меня есть это регулярное выражение в Perl, которое берет журнал где-то еще

/ \ $ LOG (я?): \ S * (. Ни | (темп (GD | MD), (\ д {1,2}) {4})) \ S * \ $ /

в основном то, что когда-либо между $ LOg: и $ i, я хочу взять и исключить любой пробел, значение которого между ними может быть чем-то или выше

Ответы [ 4 ]

3 голосов
/ 16 февраля 2009

Я бы использовал это регулярное выражение:

/\$LOG:([^$]+)\$/i

Итак:

"$LOG: 08880xbpnd $ fhdsafidsfsd df sd fsd f sd fsd".match(/\$LOG:([^$]+)\$/i)
2 голосов
/ 16 февраля 2009

Это работает для меня:

<script type="text/javascript">
  // Call the function with a sample input string.
  GetMyLog("$LOG: 08880xbpnd $ fhdsafidsfsd df sd fsd f sd fsd");

  function GetMyLog(fullString)
  {
    // Create a Regex object. We want to capture all word-like characters within the $LOG and ending $
    // This assumes that there will not be any more "$" characters in the trailing string.
    var reg = /\$LOG:\s*([\w]+)\s*\$/;

    // If the match attempt was successful, we need to get the second value in the array returned by the match.
    if (fullString.match(reg))
    {
      alert(reg.exec(fullString)[1]);
    }
  }
</script>
0 голосов
/ 16 февраля 2009

Я не буду использовать регулярные выражения, ваш случай прост и, возможно, используя подстроку, вы можете получить выигрыш в скорости.

Попробуйте использовать что-то вроде этого:

function getToken(logline, startTag, endTag) {
  return logline.substring(startTag.length,logline.indexOf(endTag,1));
}

новая версия в ответ на комментарий:

function getToken(logline, startTag, endTag) {
  result =""; 
  if ( logline.indexOf(startTag)>=0) 
    result= logline.substring(startTag.length,logline.indexOf(endTag,1));
  return result;  
}
0 голосов
/ 16 февраля 2009

Мэтью,

следующее регулярное выражение должно давать вам что-нибудь между $ LOG: и $ в обратной ссылке \ 1

\$LOG:(.*?)\$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...