2010-12-14 4 views
0

Я пытаюсь проверить, была ли определенная компания уже выбрана для приложения. формат companyList является:javascript regex help

60.261.420 (список CompanyID)

Я использовал

cID = $('#coName').val().split('::')[1]; 

получить только идентификатор.

Я называю эту функцию через мимоходом сказать 60:

findCompany = function(value) { 
    var v = /^.+60,261,420$/.test(value); 
    alert(v); 
} 

, когда я прохожу ту же самую строку, я получаю ложь. любая помощь?

+0

Что такое "# companyList #" здесь? Другими словами, как выглядит это регулярное выражение, когда вы используете источник просмотра на странице? – Pointy

+0

Что такое тег cfoutput для? Вы видите, что такое javascript в вашем браузере, а не в исходном коде. Тег будет заменен чем-то. –

+0

@Romario Я предполагаю, что это вещь ColdFusion. – Pointy

ответ

1

Ну, если ваш список компании является списком числовых идентификаторов, как это, вы должны сделать в результате регулярное выражение на самом деле быть правильно выражение —, если это так, как вы хотите это сделать.

Другой вариант - просто создать массив, а затем проверить значение, находящееся в массиве.

Как регулярное выражение, хотя, что вы могли бы сделать это:

var companyList = [<cfoutput> whatever </cfoutput>]; // get company ID list as an array of numbers 
var companyRegex = new RegExp("^(?:" + companyList.join('|') + ")$"); 

Тогда вы можете сказать:

function findCompany(id) { 
    if (companyRegex.test(id)) alert(id + " is already in the list!"); 
} 
+0

сладкий! companyRegex.text (id) следует читать companyRegex.test (id) – CFNinja

+0

О да, да, спасибо. – Pointy

+0

Также обратите внимание, что как только вы начнете получать серьезное количество компаний, это будет немного странно. Он должен работать нормально, но до нескольких сотен, я думаю. Убедитесь, что вы попробуете его с большим списком идентификаторов, чтобы вы знали, что происходит! – Pointy

0

Почему бы не разделить строку на массив, как вы это делали для вашего тестирования, перебрать список и проверить, находится ли он?

Регулярное выражение для этого шара, сверху и медленнее. Много.

Во всяком случае, для вашего конкретного вопроса:

Вы проверить строку "60" для /^.+60,261,420$/.

. + 60, очевидно, не соответствует, потому что вам требуется хотя бы один символ до 60. Также запятые оценивают и не входят в вашу строку.

Я не совсем понимаю, откуда приходит ваше регулярное выражение.

Вы искали регулярное выражение для OR, если это жестко запрограммированный список идентификаторов?

код для разделения его и проверять массив идентификаторов:

findCompany = function(value) { 
    $('#coName').val().split('::').each(function(val){ 
    if(val == value) return true; 
    }); 
    return false; 
} 
+0

Я ищу регулярное выражение. Я попытался создать его, но это неправильно. Иды исходят из запроса, затем я конвертирую в список. я дам ему попробовать для поиска массива – CFNinja

+0

'$' <- это jQuery? Внутри check-fn: '$ ('# coName'). Val().split ('::'). each (function (val) {if (val == value) возвращает true;}); return false; '. – Kissaki

+0

Хорошо, это не jQuery. Что это за библиотека? Вероятно, она также имеет некоторые функции? Если нет, вам придется использовать JavaScripts 'for (var val in coNameText)'. – Kissaki