2015-07-07 2 views
1

Я новичок в reg exp Я искал много о шаблоне, чтобы найти скобки круга в строковом значении, наконец, я нашел. Но это не работает, когда я получаю значение из DIVНайти regexp в документе. getelementbyid

Ниже представлен код JavaScript

function myText(){ 
var inputString = document.getElementById("text").innerHTML; 
var result = inputString.match(/\(+/g); 
alert(result); 
} 
myText(); 

HTML код

<div id="text"> 
welcome to (MotherLand) 
</div> 

Я попытался с удалением .Value из inputString

Я получаю результат как null in alert. Я попытался с удалением .Value из inputString

И получают ошибку в окне консоли Не удается прочитать свойство «спичку» неопределенного

я получаю результат как нуль в встревоженной

Я хочу только круг скобки не внутри значения.

Выход должен быть (

Пожалуйста, объясните мне, что я делаю неправильно.

скрипку link

Благодаря Mahadevan

+2

'innerHTML.value' будет' undefined'. Попробуйте 'getElementById ('text'). TextContent' – Phil

ответ

2

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

http://jsfiddle.net/12auwf1s/

var inputString = document.getElementById("text").innerHTML

var result = inputString.match(/\(([^)]+)\)/);

//result[0] contains (Motherland)

//result[1] contains Motherland

+0

Привет, спасибо за вывод, но я хочу, чтобы только круглые скобки не были внутри значения. – Mahadevan

1

Вот что я вижу неправильно:

  1. Вам нужно получить такое значение.

    var inputString = document.getElementById("text").innerHTML; 
    
  2. Выражения вы хотите, чтобы найти текст между "круговыми скобками" является:

    var result = inputString.match(/\(([^\)]+)\)/); 
    
    \(  // Match open parenthesis 
    (  // Start a capture group 
    [^\)]+ // Match any character except a close parenthesis, repeating. 
    )  // End capture group 
    \)  // Match close parenthesis 
    

    result будет массивом. Первой позицией будет весь матч, и последующие позиции в массиве будут представлять собой любые группы захвата из вашего выражения. Таким образом, чтобы получить текст между скобками, вы получите доступ к result[1].

  3. У меня возникли проблемы с копированием его в jsFiddle из-за арабских символов.Возможно, вам придется найти фактические значения Unicode этих символов и использовать их в своем регулярном выражении. Insert Unicode character into JavaScript

Вот дем без арабских букв: http://jsfiddle.net/tvxmrLgv/7/

+0

Привет, спасибо за вывод, но я хочу только круглые скобки не внутри значения. – Mahadevan

+0

Затем просто переместите скобку группы захвата за пределы '\ (' и '\)'. Например: var result = inputString.match (/ (\ ([^ \)] + \)) /); '. Демо: http://jsfiddle.net/tvxmrLgv/10/. Теперь он включает скобки в матче. – Chev

+0

Большое вам спасибо за ответ. Я не хочу, чтобы текст внутри скобки. Я хочу, чтобы открытые круглые скобки были закрытыми. – Mahadevan

Смежные вопросы