2012-12-11 2 views
0

사용자 이름을 LMS (학습 관리 시스템)에서 HTML 페이지로 가져 오는 방법을 수정하려고합니다. 현재 이름과성에 대한 두 개의 입력이 있습니다.자바 스크립트 바꾸기

이름 : 존 레이

성을 : 사용자가 그래서 우리는 그들과 같이 첫 번째 이름 입력 상자에 추가 한 자신의 중간 이름을 추가하고 싶어 미상

에서 뽑아 우리의 코드를 자신의 HTML 페이지에 이름은 다음과 같습니다

var strStudentName; 

if (typeof opener != "undefined" && typeof opener.LMS_student_name != "undefined" && opener.LMS_student_name != null) 
{ 
    strStudentName = opener.LMS_student_name; 
} 
else 
{ 
    strStudentName = "the Student"; 
} 

var objRegExp = /(\w+),(\w+)/; 
var strReverseName = strStudentName.replace(objRegExp, "$2 $1"); 

불행하게도이 코드는 자신의 중간 이름 마지막에 "홍길동 레이을." 나는 그것을 읽고 싶습니다 "John Ray Doe." $ 2와 $ 1을 바꾼다면 "Doe John Ray"내가 중간 이름을 쓰더라도 항상 최후가됩니다!

이 코드의 원래 목적은 LMS가 이름을 거꾸로 (Doe, John)와 같이 기본값으로 설정하기 때문에 사용자의 이름을 먼저 지정하는 것이 었습니다.

도와주세요! 고맙습니다!!

+0

모든 항목에 중간 이름이 있습니까? 또는 일부만? –

답변

0

을, 당신은 당신의 두 번째 캡처 그룹의 단어 문자를 지정할 필요가 있습니다 - 귀하의 의견은 자체에 포함 된 작동합니다 다음 /(\w+),(.+)/; 인 경우 .

이름 문자열 다음에 더 많은 문자가있는 경우 정규식을 올바르게 지정하기 위해 문자가 무엇인지에 대한 자세한 정보가 필요합니다.

+0

이것은 작동했습니다! 이것은 일주일 동안 나를 미치게했다! 각 단어를 구체적으로 지정해야한다고 생각했습니다. 정말 고맙습니다! – Dawn

0

당신이 당신의 정규식 표현 업그레이드해야합니다 귀하의 입력 데이터에 따라

var objRegExp = /(\w+),((\w+)(\s\w+))*/; 
+2

일치하지 않는 012이 – Eric

+0

감사합니다. –

0

두 번째 (\w+)이 공백과 중간 이름을 포착하지 않기 때문입니다.

var objRegExp = /(\w+),(\w+)(?:\s(\w+))?/; 

$3 당신에게 중간 이름을 줄 것입니다.

관련 문제